Menggunakan Ungkapan Biasa untuk Memetakan URL dalam Go
Dalam Go, menggunakan ungkapan biasa untuk memadankan URL membolehkan penghalaan URL yang lebih fleksibel dan ekspresif. Walau bagaimanapun, bergantung pada fungsi http.HandleFunc() untuk tujuan ini adalah tidak sesuai.
Fungsi http.HandleFunc() ditujukan terutamanya untuk memadankan laluan tetap atau subpokok berakar. Ia tidak menyokong penggunaan ungkapan biasa. Untuk mencapainya, anda perlu mendaftarkan pengendali kepada subpokok berakar (cth., /), dan kemudian melaksanakan pemadanan regexp tersuai dan penghalaan dalam pengendali.
Pertimbangkan contoh berikut:
import ( "fmt" "net/http" "regexp" ) var rNum = regexp.MustCompile(`\d`) // Matches URLs with digits var rAbc = regexp.MustCompile(`abc`) // Matches URLs containing "abc" func main() { http.HandleFunc("/", route) http.ListenAndServe(":8080", nil) } func route(w http.ResponseWriter, r *http.Request) { switch { case rNum.MatchString(r.URL.Path): digits(w, r) case rAbc.MatchString(r.URL.Path): abc(w, r) default: w.Write([]byte("Unknown Pattern")) } } func digits(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Has digits")) } func abc(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Has abc")) }
Kod ini:
Sebagai alternatif, anda boleh menggunakan perpustakaan luaran seperti Gorilla MUX untuk mencapai tahap yang lebih maju dan keupayaan penghalaan URL serba boleh.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Ungkapan Biasa untuk Penghalaan URL Fleksibel dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!