Dalam bidang pembangunan web dengan Go, pakej net/http memperkasakan pembangun dengan alatan yang berkuasa untuk membina perkhidmatan web. Walau bagaimanapun, apabila ia berkaitan dengan struktur sistem fail, konsep direktori "root" mungkin tidak jelas dengan segera kepada pendatang baharu Go. Artikel ini bertujuan untuk menjelaskan topik ini.
Tidak seperti pelayan fail statik, pelayan web Go's net/http beroperasi menggunakan pengendali. Pengendali ini bertanggungjawab untuk memproses permintaan HTTP dan menjana respons. Untuk memetakan pengendali ke URL tertentu, pembangun menggunakan fungsi Handle() atau HandleFunc().
Walau bagaimanapun, Go menyertakan fungsi FileServer() dalam pakej http, yang membenarkan penciptaan pengendali yang menyediakan fail statik dari direktori tertentu. Direktori ini berkesan menjadi "root" untuk menyajikan kandungan statik.
Apabila menentukan laluan ke direktori akar dalam FileServer( ), ada dua pilihan:
Sebagai contoh, kod berikut menentukan pelayan fail statik dengan laluan relatif:
http.Handle("/", http.FileServer(http.Dir("/tmp")))
Ini akan menyediakan fail statik daripada folder "/tmp", dengan andaian ia berada dalam direktori kerja semasa.
Untuk mempamerkan aplikasi yang lengkap, pertimbangkan coretan kod berikut:
package main import ( "log" "net/http" ) func main() { // Static fileserver with a root of "/tmp" http.Handle("/", http.FileServer(http.Dir("/tmp"))) log.Fatal(http.ListenAndServe(":8080", nil)) }
Apabila aplikasi ini dijalankan, ia menyediakan pelayan web statik yang menyediakan fail statik daripada direktori "/tmp", memetakannya ke URL akar /.
Untuk mencapai pemetaan URL yang lebih kompleks, Go menyediakan fungsi StripPrefix(). Fungsi ini membenarkan pengubahsuaian URL permintaan sebelum ia dikendalikan oleh FileServer. Contohnya:
http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
Dalam kes ini, URL dengan awalan "/tmpfiles/" akan dilucutkan awalan itu dan laluan yang selebihnya akan digunakan untuk mengakses fail statik dalam direktori "/tmp".
Atas ialah kandungan terperinci Apakah Direktori Root dalam Pelayanan Fail Go Web Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!