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
- Pasang perpustakaan gorila/mux
Jalankan arahan berikut di terminal untuk memasang perpustakaan gorila/mux:
routingCreeware
-
Mari kita mulakan sekarang Untuk mencipta perisian tengah penghalaan, mula-mula buat perisian tengah.pergi fail baharu untuk menentukan fungsi perisian tengah kami.
go get -u github.com/gorilla/mux
Salin selepas log masuk
Dalam 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).
Jalankan kod
Laksanakan arahan berikut dalam terminal untuk menjalankan kod:
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!")
}
Salin selepas log masuk
Sekarang, apabila kita melawat localhost:8080, kita boleh melihat output "Melaksanakan middleware" dalam konsol.
2. Gunakan perpustakaan net/http untuk melaksanakan perisian tengah penghalaan
Jika 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.go
Salin selepas log masuk
Dalam 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.
Jalankan kod
Laksanakan arahan berikut dalam terminal untuk menjalankan kod:
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!")
}
Salin selepas log masuk
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!