Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk melaksanakan penghalaan dinamik golang

Bagaimana untuk melaksanakan penghalaan dinamik golang

PHPz
Lepaskan: 2023-04-24 15:23:36
asal
1148 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang cekap dan mempunyai kaedah tersendiri dalam melaksanakan penghalaan. Artikel ini akan memperkenalkan kaedah pelaksanaan penghalaan dinamik Golang.

1. Pengenalan kepada penghalaan Golang

Di Golang, kita boleh menggunakan mux dalam pakej net/http untuk melaksanakan penghalaan. mux ialah penghala yang memajukan permintaan kepada pengendali yang sesuai berdasarkan laluan URL permintaan dan kaedah HTTP. mux menggunakan jadual penghalaan untuk memetakan URI permintaan kepada pengendali.

Penghala Golang perlu memenuhi ciri berikut:

  1. Sokong penghalaan statik: minta URI berdasarkan pengendali padanan laluan.
  2. Menyokong penghalaan dinamik: minta URI berdasarkan pengendali padanan berubah-ubah.
  3. Sokong middleware: Penghala boleh mencipta rangkaian middleware untuk mengendalikan permintaan.
  4. Sokongan kaedah HTTP: Penghala boleh memajukan permintaan kepada pengendali yang sepadan berdasarkan kaedah HTTP.

2. Kaedah pelaksanaan penghalaan dinamik

  1. Fungsi pemproses

Golang menggunakan fungsi pemproses untuk memproses permintaan, fungsi pemproses Merupakan fungsi dengan http.ResponseWriter dan http.Request parameter. http.ResponseWriter ialah antara muka untuk menulis jawapan http.Request mengandungi semua maklumat permintaan HTTP.

Penghalaan dinamik menggunakan pembolehubah sebagai sebahagian daripada laluan URL dan kami boleh mengakses pembolehubah ini dalam fungsi pengendali.

Kita boleh menggunakan fungsi mux.Vars untuk mendapatkan pembolehubah pada URL. Contohnya:

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/{category}/{id:[0-9]+}", ProductHandler)
    http.ListenAndServe(":8080", r)
}

func ProductHandler(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    category := vars["category"]
    id := vars["id"]
    fmt.Fprintf(w, "Product category:%v id:%v", category, id)
}
Salin selepas log masuk

Dalam contoh ini, kami mengehadkan parameter id kepada hanya jenis angka dengan menggunakan ungkapan biasa. Gunakan {category} dan {id:[0-9]+} sebagai parameter laluan penghalaan.

  1. Fungsi pengendalian ralat

Di Golang, kita boleh menggunakan fungsi http.NotFound untuk mengendalikan 404 ralat. Kita boleh menghantar fungsi NotFound kepada mux.NotFoundHandler() untuk menyesuaikan fungsi pengendalian ralat 404, contohnya:

r := mux.NewRouter()
r.NotFoundHandler = http.HandlerFunc(Custom404Handler)
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan fungsi Custom404Handler sebagai fungsi pengendalian ralat 404 tersuai.

  1. Ubah hala

Di Golang, kita boleh menggunakan fungsi http.Redirect untuk melaksanakan fungsi ubah hala. Contohnya:

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/old-route", func(w http.ResponseWriter, r *http.Request) {
        http.Redirect(w, r, "/new-route", 301)
    })
    r.HandleFunc("/new-route", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "New Route")
    })
    http.ListenAndServe(":8080", r)
}
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan fungsi http.Redirect untuk mengubah hala laluan /lama-laluan ke laluan /new-route dan menggunakan kod status 301 untuk menunjukkan ubah hala kekal .

3. Kaedah pelaksanaan middleware

Di Golang, kami menggunakan fungsi jenis HandlerFunc sebagai middleware, yang mempunyai parameter http.ResponseWriter dan *http.Request, dan juga menerima parameter http.HandlerFunc seterusnya. Parameter seterusnya adalah serupa dengan nod seterusnya dalam senarai terpaut.

type Middleware func(http.HandlerFunc) http.HandlerFunc

func LoggerMiddleware(next http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        log.Printf("Logging middleware: %s", r.RequestURI)
        next(w, r)
    }
}
Salin selepas log masuk

Dalam contoh di atas, fungsi LoggerMiddleware ialah perisian tengah yang merekodkan permintaan HTTP. Parameter seterusnya ialah nod seterusnya dalam senarai terpaut, yang terus memproses permintaan.

4. Ringkasan

Pakej mux Golang ialah penghala yang sangat berkuasa yang menyokong penghalaan statik, penghalaan dinamik dan perisian tengah. Dengan ciri ini, kami mempunyai lebih kawalan ke atas permintaan HTTP dan boleh mengurus penghalaan dan pengendalian permintaan untuk aplikasi web dengan lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penghalaan dinamik golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan