Go: servire file statici

Go: servire file statici

Go è un linguaggio di programmazione open-source sviluppato da Google che sta guadagnando sempre più popolarità per lo sviluppo di applicazioni web e server. In questo articolo, esploreremo come servire file statici tramite HTTP in Go utilizzando la standard library del linguaggio.

Prima di addentrarci nel processo di servizio dei file statici, è importante capire cosa si intende per "file statici" in un contesto web. I file statici sono file che non cambiano dinamicamente in base alle richieste degli utenti. Questi includono file come HTML, CSS, JavaScript, immagini, font e altri asset necessari per la corretta visualizzazione di una pagina web.

Creiamo una nuova cartella per il nostro progetto e all'interno di essa creiamo il file principale main.go in cui scriveremo il codice per il server.

Per iniziare, apriamo il file main.go e importiamo la standard library di Go:


package main

import (
    "net/http"
)

Ora, definiamo una funzione che gestirà le richieste HTTP per i file statici:


func serveStaticFile(w http.ResponseWriter, r *http.Request) {
    // Otteniamo il percorso del file richiesto dall'utente
    filePath := r.URL.Path

    // Verifichiamo se il file richiesto esiste nella cartella "static"
    // Se il file non esiste, restituiamo un errore 404 (Not Found)
    if _, err := http.Dir("static").Open(filePath); err != nil {
        http.NotFound(w, r)
        return
    }

    // Se il file esiste, lo serviamo al client
    http.ServeFile(w, r, filePath)
}


Successivamente, dobbiamo configurare il percorso dei file statici che vogliamo servire. Supponiamo che i file statici si trovino in una cartella chiamata "static" nella radice del nostro progetto. Utilizziamo http.FileServer per servire questi file:


func main() {
    fs := http.FileServer(http.Dir("static"))
    http.Handle("/", fs)

    // Avvia il server sulla porta 8080
    port := ":8080"
    println("Server in ascolto sulla porta", port)
    err := http.ListenAndServe(port, nil)
    if err != nil {
        panic(err)
    }
}

Ora abbiamo configurato il server per servire i file statici dalla cartella "static" quando riceve una richiesta HTTP sulla root del dominio.

Prima di eseguire il server, assicuriamoci che nella cartella del nostro progetto ci sia una cartella chiamata "static" contenente i file statici che vogliamo servire (ad esempio, un file index.html, file CSS, immagini, ecc.).

Torna su