Rumah > pembangunan bahagian belakang > Golang > Cara melaksanakan perisian tengah penghalaan dalam bahasa Go

Cara melaksanakan perisian tengah penghalaan dalam bahasa Go

王林
Lepaskan: 2023-12-17 17:28:00
asal
1346 orang telah melayarinya

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

  1. 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!

Label berkaitan:
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