Menyajikan Halaman Utama dan Kandungan Statik daripada Root in Go
In Go, menyajikan kedua-dua kandungan statik dan halaman utama daripada direktori akar sambil mengendalikan khusus URL memerlukan pendekatan yang disesuaikan. Secara lalai, mendaftarkan pengendali untuk laluan akar ("/") bercanggah dengan penyajian kandungan statik dari direktori yang sama.
Untuk menangani perkara ini, satu pilihan ialah menggunakan pelaksanaan FileServer alternatif yang menyemak kewujudan fail sebelum cuba menyampaikannya. Untuk fail yang tidak hadir, ia boleh menunda kepada pengendali halaman utama atau mengembalikan ralat 404.
Kod berikut menunjukkan pendekatan ini:
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) }
Dalam kod ini, fungsi wujud menyemak sama ada fail wujud pada laluan tertentu. Pengendali FileServerWithFallback menyediakan fail jika ia wujud dalam direktori yang disediakan. Jika tidak, ia membenarkan permintaan untuk meneruskan ke pengendali halaman utama.
Dengan menggunakan pelaksanaan FileServer tersuai ini, kandungan statik boleh disampaikan daripada direktori akar sementara masih membenarkan pengendali halaman utama digunakan seperti yang diharapkan.
Atas ialah kandungan terperinci Bagaimana untuk Melayan Kedua-dua Halaman Utama dan Kandungan Statik daripada Direktori Root dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!