Diese Aufgabe ist mit dem Golang net / http-Paket sehr einfach.
Alles was Sie tun müssen ist:
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
Angenommen, statische Dateien befinden sich in einem Ordner static
im Stammverzeichnis des Projekts.
Wenn es sich im Ordner befindet static
, wird eine index.html
Datei http://localhost:3000/
aufgerufen , die dazu führt, dass diese Indexdatei gerendert wird, anstatt alle verfügbaren Dateien aufzulisten.
Wenn Sie beispielsweise eine andere Datei in diesem Ordner aufrufen (z. B. http://localhost:3000/clients.html
), wird diese Datei angezeigt, die vom Browser ordnungsgemäß gerendert wurde (mindestens Chrome, Firefox und Safari :)).
UPDATE: Serving von Dateien mit einer anderen URL als "/"
Wenn Sie Dateien ./public
bereitstellen möchten, sagen Sie aus dem Ordner unter URL: localhost:3000/static
Sie müssen zusätzliche Funktionen verwenden : func StripPrefix(prefix string, h Handler) Handler
wie folgt:
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
http.ListenAndServe(":3000", nil)
}
Dank dessen sind alle Ihre Dateien ./public
unter verfügbarlocalhost:3000/static
http.StripPrefix
Wenn Sie ohne Funktion versuchen würden, auf eine Datei zuzugreifen localhost:3000/static/test.html
, würde der Server danach suchen./public/static/test.html
Dies liegt daran, dass der Server den gesamten URI als relativen Pfad zur Datei behandelt.
Glücklicherweise ist es mit der eingebauten Funktion leicht zu lösen.
/static/
nicht/static
?