Rumah >pembangunan bahagian belakang >Golang >Cara melaksanakan perisian tengah penghalaan dalam bahasa Go
Cara melaksanakan perisian tengah penghalaan dalam bahasa Go, contoh kod khusus diperlukan
Pengenalan:
Dalam pembangunan web dalam bahasa Go, penghalaan adalah bahagian yang sangat diperlukan. Perisian tengah penghalaan ialah modul berfungsi yang dilaksanakan sebelum permintaan mencapai fungsi pemprosesan sasaran. Mereka boleh memintas, mengesahkan, merekod dan operasi lain atas permintaan, dengan itu membantu pembangun mengendalikan beberapa fungsi biasa dan meningkatkan kebolehgunaan semula kod.
Artikel ini akan memperkenalkan cara melaksanakan perisian tengah penghalaan dalam bahasa Go dan memberikan contoh kod khusus.
1. Gunakan perpustakaan gorila/mux untuk melaksanakan penghalaan middleware
Jalankan arahan berikut di terminal untuk memasang perpustakaan gorila/mux:
routingCreewarego get -u github.com/gorilla/muxDalam kod di atas, kami mentakrifkan fungsi yang dipanggil middleware, yang menerima parameter seterusnya jenis http.Handler. Kami membungkus fungsi pengendali sasaran dengan mengembalikan http.Handler baharu. Dalam pengendali yang dibalut, kami boleh menambah logik tersuai kami dan kemudian memanggil next.ServeHTTP(w, r) untuk menghantar permintaan kepada middleware atau fungsi pengendali sasaran seterusnya. Dalam fungsi utama, kami menggunakan perisian tengah kami untuk semua laluan melalui r.Use(middleware).
package main import ( "fmt" "net/http" "github.com/gorilla/mux" ) func middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // 在请求到达目标处理函数之前执行的操作 fmt.Println("Executing middleware") // 调用下一个中间件或目标处理函数 next.ServeHTTP(w, r) }) } func main() { r := mux.NewRouter() // 使用我们的中间件 r.Use(middleware) // 路由定义 r.HandleFunc("/", homeHandler).Methods("GET") // 启动服务器 http.ListenAndServe(":8080", r) } func homeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") }Sekarang, apabila kita melawat localhost:8080, kita boleh melihat output "Melaksanakan middleware" dalam konsol. 2. Gunakan perpustakaan net/http untuk melaksanakan perisian tengah penghalaanJika anda tidak menggunakan perpustakaan pihak ketiga, kami juga boleh menggunakan perpustakaan net/http untuk melaksanakan perisian tengah penghalaan. Berikut ialah kod sampel khusus:
go run main.goDalam kod di atas, kami mentakrifkan fungsi bernama middleware, yang menerima parameter seterusnya jenis http.Handler. Kami membungkus fungsi pengendali sasaran dengan mengembalikan http.Handler baharu. Dalam pengendali yang dibalut, kami boleh menambah logik tersuai kami dan kemudian memanggil next.ServeHTTP(w, r) untuk menghantar permintaan kepada middleware atau fungsi pengendali sasaran seterusnya. Dalam fungsi utama, kami mencipta ServeMux baharu dan menggunakan mux.Handle("/", pengendali) untuk menggunakan perisian tengah kami pada laluan akar.
package main import ( "fmt" "log" "net/http" ) type MyHandler struct{} func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { fmt.Println("Executing middleware") // 调用目标处理函数 homeHandler(w, r) } func middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // 在请求到达目标处理函数之前执行的操作 fmt.Println("Executing middleware") next.ServeHTTP(w, r) }) } func main() { mux := http.NewServeMux() // 创建中间件 handler := middleware(&MyHandler{}) // 设置路由 mux.Handle("/", handler) // 启动服务器 log.Fatal(http.ListenAndServe(":8080", mux)) } func homeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") }Sekarang, apabila kita melawat localhost:8080, kita boleh melihat output "Melaksanakan middleware" dalam konsol. Kesimpulan: Melalui kod sampel di atas, kami mempelajari cara melaksanakan perisian tengah penghalaan dalam bahasa Go. Perisian tengah penghalaan boleh dilaksanakan dengan mudah menggunakan perpustakaan pihak ketiga atau terus menggunakan perpustakaan net/http. Ciri ini boleh membantu kami mengendalikan beberapa keperluan fungsi biasa, meningkatkan kebolehgunaan semula kod dan menjadikan aplikasi kami lebih fleksibel dan lebih mudah untuk diselenggara. Semoga artikel ini dapat membantu anda!
Atas ialah kandungan terperinci Cara melaksanakan perisian tengah penghalaan dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!