Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang middleware rangka kerja Gin dan aplikasinya

Penjelasan terperinci tentang middleware rangka kerja Gin dan aplikasinya

王林
王林asal
2023-06-22 10:21:172426semak imbas

Rangka kerja Gin ialah rangka kerja web yang ringan berdasarkan bahasa Go. Ia mempunyai kelebihan kecekapan tinggi, fleksibiliti dan kebolehskalaan yang mudah, dan disukai oleh banyak pembangun. Mekanisme perisian tengah ialah sorotan rangka kerja Gin. Dalam artikel ini, kami akan meneroka mekanisme perisian tengah bagi rangka kerja Gin dan aplikasinya secara terperinci.

1. Apakah itu middleware

Middleware merujuk kepada pemalam yang memintas dan menulis semula logik pemprosesan permintaan dan respons semasa proses memproses permintaan rangkaian. Dalam bahasa Go, middleware biasanya dilaksanakan menggunakan jenis fungsi. Perisian tengah rangka kerja Gin dilaksanakan dengan menghantar fungsi ini sebagai parameter formal kepada fungsi yang mengendalikan permintaan dan respons.

Dalam rangka kerja Gin, middleware terbahagi kepada dua jenis: middleware global dan middleware tempatan. Perisian tengah global bertindak pada semua laluan, manakala perisian tengah tempatan bertindak pada laluan atau kumpulan penghalaan tertentu.

2. Mekanisme perisian tengah rangka kerja Gin

Mekanisme perisian tengah rangka kerja Gin adalah sangat mudah Anda hanya perlu menghantar perisian tengah sebagai jenis fungsi kepada fungsi yang mengendalikan permintaan dan tindak balas.

Sebagai contoh, kod berikut ialah middleware yang ringkas:

func MyMiddleware() gin.HandlerFunc {
  return func(c *gin.Context) {
    // do something
    c.Next()
    // do something after
  }
}

Antaranya, fungsi MyMiddleware mentakrifkan fungsi middleware yang mengembalikan jenis fungsi. Jenis fungsi yang dikembalikan ialah fungsi yang mengendalikan permintaan dan respons, biasanya dipanggil HandlerFunc.

HandlerFunc ditakrifkan seperti berikut:

type HandlerFunc func(*Context)

Ia menerima parameter jenis *Context, mewakili konteks permintaan. Jenis *Context mengandungi pelbagai maklumat dalam permintaan, seperti pengepala permintaan, badan permintaan, parameter permintaan, dsb.

Dalam fungsi middleware, kita boleh beroperasi pada konteks dan memanggil kaedah c.Next() untuk menghantar kawalan kepada middleware atau fungsi pemprosesan laluan seterusnya.

Sebagai contoh, jika kita ingin menambah pengepala permintaan dalam middleware, kita boleh melakukan perkara berikut:

func AddHeader() gin.HandlerFunc {
  return func(c *gin.Context) {
    c.Header("X-Request-Id", "123456")
    c.Next()
  }
}

Perisian tengah ini akan menambah pengepala X-Request-Id pada permintaan dan kemudian mengawal The kanan dihantar ke fungsi pemprosesan seterusnya. Dalam fungsi pemprosesan penghalaan, kita boleh mendapatkan nilai pengepala permintaan ini melalui kaedah c.GetHeader.

3. Penggunaan perisian tengah dalam rangka kerja Gin

Dalam rangka kerja Gin, menggunakan perisian tengah adalah sangat mudah. Hanya hantar fungsi middleware kepada Use, GET, POST, PUT, DELETE dan kaedah lain. Contohnya:

import (
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()

    // 使用全局中间件
    r.Use(MyGlobalMiddleware())

    // 定义路由组,并使用局部中间件
    v1 := r.Group("/v1")
    {
        v1.Use(AddHeader())
        v1.GET("/hello", Hello)
    }

    r.Run(":8080")
}

func MyGlobalMiddleware() gin.HandlerFunc {
  return func(c *gin.Context) {
    // do something
    c.Next()
    // do something after
  }
}

func AddHeader() gin.HandlerFunc {
  return func(c *gin.Context) {
    c.Header("X-Request-Id", "123456")
    c.Next()
  }
}

func Hello(c *gin.Context) {
    headers := c.Request.Header
    requestId := headers.Get("X-Request-Id")
    c.JSON(200, gin.H{
        "message": "hello",
        "request_id": requestId,
    })
}

Dalam kod di atas, kami menggunakan perisian tengah global MyGlobalMiddleware(), yang akan bertindak pada semua laluan. Kami juga menggunakan perisian tengah tempatan AddHeader(), yang hanya bertindak sebelum laluan /v1/hello. Dalam fungsi Hello, kami memperoleh nilai pengepala permintaan X-Request-Id dan mengembalikannya kepada pemanggil.

Melalui demonstrasi kod ini, kita dapat melihat kaedah mudah dan mudah untuk menggunakan perisian tengah dalam rangka kerja Gin.

4. Perisian tengah biasa

Selain perisian tengah tersuai di atas, rangka kerja Gin juga menyediakan banyak perisian tengah biasa Mari perkenalkan secara ringkas beberapa perisian tengah yang lebih penting:

  1. Logger middleware

Logger middleware adalah middleware yang bertanggungjawab untuk mengeluarkan log akses Apabila permintaan diproses separuh jalan, middleware ini akan mengeluarkan permintaan pengelogan, seperti URL yang diminta, kaedah permintaan, permintaan pengepala, dsb.

Dalam rangka kerja Gin, perisian tengah Logger boleh diperkenalkan menggunakan kod berikut:

r := gin.New()
r.Use(gin.Logger())

Dengan memperkenalkan perisian tengah Logger, kita boleh melihat maklumat terperinci setiap permintaan dalam log akses.

  1. Perisian tengah pemulihan

Perisian tengah pemulihan ialah perisian tengah pengendalian ralat Apabila pengecualian berlaku dalam atur cara, perisian tengah ini akan memulihkan operasi biasa program dan mengeluarkan ralat mesej.

Dalam rangka kerja Gin, perisian tengah Pemulihan boleh diperkenalkan menggunakan kod berikut:

r := gin.Default()
r.Use(gin.Recovery())

Selepas memperkenalkan perisian tengah ini, jika pengecualian berlaku dalam program, ia tidak akan ranap secara langsung, tetapi akan kembali kepada normal Jalankan dan keluarkan mesej ralat untuk membantu kami mencari masalah dengan cepat.

  1. Cors middleware

Cors middleware digunakan untuk mengendalikan permintaan merentas domain Apabila kami perlu menghantar permintaan kepada API di bawah nama domain yang berbeza, ia mestilah disahkan oleh CORS Jika tidak permintaan akan ditolak.

Dalam rangka kerja Gin, perisian tengah Cors boleh diperkenalkan menggunakan kod berikut:

r := gin.Default()
r.Use(cors.Default())

Selepas memperkenalkan perisian tengah ini, kami boleh menghantar permintaan kepada API di bawah nama domain yang berbeza tanpa perlu risau tentang Pengesahan CORS gagal.

5. Ringkasan

Artikel ini terutamanya memperkenalkan mekanisme middleware bagi rangka kerja Gin dan aplikasinya Dalam pembangunan sebenar, middleware memainkan peranan yang sangat penting. Melalui pemahaman yang mendalam tentang mekanisme perisian tengah, kami boleh menggunakan fungsinya dengan lebih baik dan meningkatkan kecekapan pembangunan dan kebolehselenggaraan program kami.

Dengan memperkenalkan middleware biasa, kami juga boleh menjadikan program ini mempunyai lebih banyak fungsi, seperti output log, pengendalian ralat, permintaan merentas domain, dll., supaya dapat menyesuaikan diri dengan lebih baik kepada senario aplikasi sebenar.

Oleh itu, dalam proses pembangunan rangka kerja Gin, menguasai penggunaan perisian tengah adalah kemahiran yang sangat penting.

Atas ialah kandungan terperinci Penjelasan terperinci tentang middleware rangka kerja Gin dan aplikasinya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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