Penjelasan terperinci tentang penghalaan dinamik dan proksi terbalik dalam rangka kerja Gin

WBOY
Lepaskan: 2023-06-22 21:56:07
asal
2051 orang telah melayarinya

Rangka kerja Gin ialah rangka kerja Web yang ringan dalam bahasa Go Ia cekap, mudah digunakan dan pembangunan pesat, jadi ia digemari oleh ramai pembangun. Dalam rangka kerja Gin, penghalaan dinamik dan proksi terbalik ialah fungsi yang biasa digunakan, dan anda perlu memahami penggunaan terperincinya semasa melakukan pembangunan web.

1. Penghalaan dinamik

Dalam pembangunan web, secara amnya kita perlu mengedarkan dan memproses permintaan URL yang berbeza, yang memerlukan sokongan penghalaan dinamik. Dalam Gin, penggunaan asas penghalaan dinamik adalah seperti berikut:

1 Pengumpulan penghalaan

Penghimpunan penghalaan boleh membahagikan satu siri laluan kepada kumpulan yang berasingan untuk pengurusan dan kawalan yang mudah. Dalam Gin, gunakan penghala.Kaedah kumpulan untuk mengumpulkan:

r := gin.Default()
v1 := r.Group("/v1")
{
    v1.POST("/login", login)
    v1.GET("/profile", profile)
}
v2 := r.Group("/v2")
{
    v2.POST("/login", login)
    v2.GET("/profile", profile)
}
Salin selepas log masuk

2 Tentukan laluan

Terdapat dua cara untuk menentukan laluan dalam Gin:

a. Mengendalikan Kaedah untuk menentukan laluan

router.Handle("GET", "/hello", func(context *gin.Context) {
        context.JSON(http.StatusOK, gin.H{
            "status": "success",
            "message": "Hello World!",
        })
})
Salin selepas log masuk

b. Gunakan penghala.GET, penghala.POST dan kaedah lain untuk menentukan laluan

router.GET("/hello", func(context *gin.Context) {
        context.JSON(http.StatusOK, gin.H{
            "status": "success",
            "message": "Hello World!",
        })
})
Salin selepas log masuk

3 selalunya diperlukan Untuk melakukan padanan parameter pada laluan, Gin boleh menangkap parameter dengan membalut nama parameter dengan pendakap kerinting {}. Kod sampel adalah seperti berikut:

router.GET("/user/:name", func(context *gin.Context) {
        name := context.Param("name")
        context.JSON(http.StatusOK, gin.H{
            "name": name,
        })
})
Salin selepas log masuk

4 Parameter kumpulan penghalaan

Seperti yang dinyatakan di atas, pengelompokan penghalaan boleh membantu kami mengurus perkumpulan penghalaan Gin juga menyokong Tetapan kumpulan penghalaan. pelaksanaan khusus adalah seperti berikut:

v1 := router.Group("/api/v1/:category")
{
    v1.GET("/books", bookList)
    v1.GET("/books/:isbn", bookDetail)
    v1.POST("/books", createBook)
    v1.PUT("/books/:isbn", updateBook)
}
Salin selepas log masuk

Pada masa ini, semua laluan kami dalam v1 boleh mendapatkan nilai parameter kategori.

2. Proksi terbalik

Proksi terbalik ialah teknologi proksi untuk pelayan web, terutamanya digunakan untuk pengoptimuman prestasi pelayan, pengimbangan beban, pemajuan permintaan dan senario lain. Dalam rangka kerja Gin, proksi terbalik dilaksanakan terutamanya melalui httputil.ReverseProxy Kaedah penggunaan adalah seperti berikut:

1 Tentukan kaedah proksi terbalik

func NewReverseProxy(target string) *httputil.ReverseProxy {
    url, _ := url.Parse(target)
    proxy := httputil.NewSingleHostReverseProxy(url)
    return proxy
}
Salin selepas log masuk

2 🎜>

Apabila mentakrifkan laluan proksi terbalik dalam rangka kerja Gin, kita perlu mentakrifkannya sebagai jenis handlerFunc, kemudian lulus kaedah proksi terbalik yang ditakrifkan oleh NewReverseProxy, dan akhirnya menggunakan kaedah proksi.ServeHTTP untuk memajukan. Kod sampel adalah seperti berikut:

router.GET("/api/*path", func(context *gin.Context) {
        NewReverseProxy("http://localhost:8080").ServeHTTP(context.Writer, context.Request)
})
Salin selepas log masuk

3. Tetapan parameter proksi songsang

Kami bukan sahaja boleh mentakrifkan satu kaedah proksi songsang, tetapi juga mentakrifkan parameter proksi songsang yang berbeza untuk setiap laluan. Kod sampel berikut:

var pathUrlMapping = map[string]string{
    "/api/search": "http://localhost:8080",
    "/api/report": "http://localhost:8081",
}

for path, url := range pathUrlMapping {
    r.GET(path, func(c *gin.Context) {
        proxy := NewReverseProxy(url)
        proxy.ServeHTTP(c.Writer, c.Request)
    })
}
Salin selepas log masuk
Di atas ialah pengenalan terperinci kepada penggunaan penghalaan dinamik dan proksi terbalik dalam rangka kerja Gin. Melalui aplikasi fleksibel penggunaan lanjutan sedemikian, kami boleh menjalankan pembangunan dan penyelenggaraan Web dengan lebih mudah.

Atas ialah kandungan terperinci Penjelasan terperinci tentang penghalaan dinamik dan proksi terbalik dalam rangka kerja Gin. 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