Golang ialah bahasa pengaturcaraan yang pantas, boleh dipercayai dan tetap yang digunakan secara meluas dalam aplikasi web, perkhidmatan rangkaian dan tugas pemprosesan data. Dalam aplikasi web, program perlu menerima permintaan daripada klien atau penyemak imbas, dan kemudian memproses setiap permintaan Ia biasanya perlu mendapatkan laluan permintaan untuk fungsi penghalaan. Artikel ini akan membincangkan cara mendapatkan laluan permintaan di Golang.
Bagaimana untuk mendapatkan laluan permintaan di Golang?
Di Golang, untuk mendapatkan laluan permintaan, anda perlu menggunakan objek bernama http.Request
. Objek ini mengandungi semua maklumat tentang permintaan, termasuk kaedah permintaan, pengepala permintaan, badan permintaan, laluan permintaan, dsb. Dengan mengendalikan objek ini, kita boleh mendapatkan laluan permintaan.
Pertama sekali, apabila kita membina pelayan web, kita perlu menggunakan pakej http
Golang. Berikut ialah kod contoh pelayan HTTP asas:
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // 获取请求路径 path := r.URL.Path fmt.Println("请求路径: ", path) fmt.Fprintln(w, "Welcome to my website!") }) log.Fatal(http.ListenAndServe(":8080", nil)) }
Dalam kod di atas, kami mentakrifkan fungsi pengendali HTTP yang menerima dua parameter: objek jenis http.ResponseWriter
dan http.Request
. Dalam fungsi tersebut, kami memanggil kaedah r.URL.Path
untuk mendapatkan laluan permintaan dan mencetaknya.
Cara lain untuk mendapatkan laluan permintaan ialah dengan mengakses atribut http.Request
r.URL.Path
. Berikut ialah contoh kod:
package main import ( "fmt" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { // 获取请求路径 path := r.URL.Path fmt.Println("请求路径: ", path) fmt.Fprintln(w, "Welcome to my website!") } func main() { http.HandleFunc("/", handler) log.Fatal(http.ListenAndServe(":8080", nil)) }
Dalam kod di atas, kami mentakrifkan fungsi pemprosesan handler
Apabila permintaan diterima, dapatkan laluan permintaan melalui r.URL.Path
dan keluarkannya ke konsol . Pada masa yang sama, kami menulis logik respons di dalam fungsi untuk membalas dengan mesej alu-aluan kembali kepada pelanggan.
Untuk maklumat terperinci tentang objek http.Request dan http.ResponseWriter, sila rujuk dokumentasi rasmi Golang. Dalam artikel ini, kami memberi tumpuan terutamanya pada cara mendapatkan laluan permintaan.
Untuk URL yang berbeza, mungkin terdapat kaedah dan logik tindak balas yang berbeza. Oleh itu, dalam persekitaran pengeluaran sebenar, kita perlu menggunakan penghala yang berbeza untuk mengendalikan permintaan yang berbeza. Biasanya, kami menggunakan penghala pihak ketiga seperti Gorilla Mux. Gorilla Mux ialah penghala yang berkuasa dan perpustakaan pemadanan URL yang boleh membantu kami mengurus logik penghalaan dengan lebih baik.
package main import ( "fmt" "log" "net/http" "github.com/gorilla/mux" ) func main() { // 创建新路由器 r := mux.NewRouter() r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, world!") }) // 设定路由 r.HandleFunc("/articles", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "这是我的文章列表页面!") }) // 设定路由 r.HandleFunc("/articles/{id}", func(w http.ResponseWriter, r *http.Request) { // 获取路由参数 vars := mux.Vars(r) id := vars["id"] fmt.Fprintf(w, "这是文章 %s 的详细页面!", id) }) // 启动服务器 log.Fatal(http.ListenAndServe(":8080", r)) }
Dalam penghala, kita boleh menggunakan kaedah r.HandleFunc
untuk menentukan peraturan penghalaan dan fungsi pemprosesan yang berbeza. Sebagai contoh, dalam contoh di atas, kami mentakrifkan dua peraturan penghalaan, /articles
dan /articles/{id}
, peraturan penghalaan pertama digunakan untuk membalas permintaan halaman senarai artikel dan peraturan penghalaan kedua digunakan untuk mendapatkan kandungan khusus berdasarkan id
Halaman butiran artikel.
Jika URL mengandungi parameter dinamik, kita boleh menggunakan kaedah mux.Vars
untuk mendapatkan nilainya dan menghantar parameter ini kepada fungsi pengendali. Dalam kod di atas, kami memperoleh nilai parameter vars["id"]
dalam URL melalui id
dan mengeluarkannya kepada klien.
Ringkasan
Di Golang, anda perlu mendapatkan laluan permintaan melalui objek http.Request
. Kita boleh menggunakan atribut r.URL.Path
untuk mendapatkan laluan. Pada masa yang sama, kami juga boleh menggunakan penghala pihak ketiga untuk mengurus logik penghalaan dan fungsi pemprosesan. Gorilla Mux ialah penghala yang berkuasa dan perpustakaan pemadanan URL yang boleh membantu kami mengurus logik penghalaan dengan lebih baik.
Atas ialah kandungan terperinci golang mendapat laluan permintaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!