Heim > Backend-Entwicklung > Golang > Wie stelle ich in Go sowohl eine Homepage als auch statische Inhalte aus dem Stammverzeichnis bereit?

Wie stelle ich in Go sowohl eine Homepage als auch statische Inhalte aus dem Stammverzeichnis bereit?

Linda Hamilton
Freigeben: 2024-12-18 11:05:10
Original
120 Leute haben es durchsucht

How to Serve Both a Homepage and Static Content from the Root Directory in Go?

Bereitstellung von Homepage- und statischen Inhalten aus dem Stammverzeichnis in Go

In Go werden sowohl statische Inhalte als auch eine Homepage aus dem Stammverzeichnis bereitgestellt und gleichzeitig spezifische Inhalte verarbeitet URLs erfordern einen maßgeschneiderten Ansatz. Standardmäßig steht die Registrierung eines Handlers für den Root-Pfad („/“) im Konflikt mit der Bereitstellung statischer Inhalte aus demselben Verzeichnis.

Um dieses Problem zu beheben, besteht eine Möglichkeit darin, eine alternative FileServer-Implementierung zu verwenden, die die Existenz von prüft eine Datei, bevor Sie versuchen, sie bereitzustellen. Bei Dateien, die nicht vorhanden sind, kann es auf den Homepage-Handler verweisen oder einen 404-Fehler zurückgeben.

Der folgende Code demonstriert diesen Ansatz:

package main

import (
    "fmt"
    "net/http"
    "os"
)

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "HomeHandler")
}

func exists(path string) bool {
    _, err := os.Stat(path)
    return !os.IsNotExist(err)
}

func FileServerWithFallback(dir string) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        path := dir + r.URL.Path
        if exists(path) {
            http.ServeFile(w, r, path)
            return
        }
    }
}

func main() {
    http.HandleFunc("/", HomeHandler) // homepage
    http.Handle("/static/", FileServerWithFallback("./static"))

    http.ListenAndServe(":8080", nil)
}
Nach dem Login kopieren

In diesem Code prüft die Funktion „exists“, ob a Die Datei existiert unter einem bestimmten Pfad. Der FileServerWithFallback-Handler stellt eine Datei bereit, wenn sie im bereitgestellten Verzeichnis vorhanden ist. Andernfalls kann die Anfrage an den Homepage-Handler weitergeleitet werden.

Durch die Verwendung dieser angepassten FileServer-Implementierung können statische Inhalte aus dem Stammverzeichnis bereitgestellt werden, während der Homepage-Handler weiterhin wie erwartet aufgerufen werden kann.

Das obige ist der detaillierte Inhalt vonWie stelle ich in Go sowohl eine Homepage als auch statische Inhalte aus dem Stammverzeichnis bereit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage