Tugas itu sangat mudah dengan paket Golang net / http.
Yang perlu Anda lakukan hanyalah:
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
dengan asumsi bahwa file statis ada di folder yang dinamai staticdi direktori root proyek.
Jika ada di dalam folder static, Anda akan memiliki index.htmlpanggilan file http://localhost:3000/yang akan menghasilkan rendering file indeks tersebut daripada mencantumkan semua file yang tersedia.
Selain itu, memanggil file lain di folder itu (misalnya http://localhost:3000/clients.html) akan menampilkan file itu, yang ditampilkan dengan benar oleh browser (setidaknya Chrome, Firefox, dan Safari :))
UPDATE: melayani file dari url yang berbeda dari "/"
Jika Anda ingin melayani file, katakan dari folder di ./publicbawah url: localhost:3000/staticAnda harus menggunakan fungsi tambahan : func StripPrefix(prefix string, h Handler) Handlerseperti ini:
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
http.ListenAndServe(":3000", nil)
}
Berkat itu, semua file Anda dari ./publictersedia di bawahlocalhost:3000/static
Tanpa http.StripPrefixfungsi, jika Anda mencoba mengakses file localhost:3000/static/test.html, server akan mencarinya./public/static/test.html
Ini karena server memperlakukan seluruh URI sebagai jalur relatif ke file.
Untungnya, ini mudah diselesaikan dengan fungsi bawaan.
/static/tidak/static?