Rumah > pembangunan bahagian belakang > Golang > Penjelasan terperinci tentang fungsi pengikatan dan pengesahan parameter rangka kerja Gin

Penjelasan terperinci tentang fungsi pengikatan dan pengesahan parameter rangka kerja Gin

王林
Lepaskan: 2023-06-23 10:03:18
asal
2266 orang telah melayarinya

Rangka kerja Gin ialah rangka kerja web ringan yang dirangkumkan berdasarkan perpustakaan net/http bahasa Go, membolehkan pembangun membina aplikasi web dengan lebih mudah. Salah satu ciri yang paling penting ialah pengikatan dan pengesahan parameter. Artikel ini akan memperkenalkan secara terperinci penggunaan dan langkah berjaga-jaga kedua-dua fungsi ini.

1. Pengikatan parameter
Dalam rangka kerja Gin, pengikatan parameter boleh difahami sebagai mengikat parameter yang diminta (seperti data borang, parameter pertanyaan URL, dll.) kepada struktur atau pembolehubah yang sepadan dalam Go tengah bahasa. Dengan cara ini, pembangun boleh mengendalikan data parameter dengan lebih mudah yang pada asalnya memerlukan penghuraian dan penukaran manual.

Sebagai contoh, jika terdapat permintaan POST, ia mengandungi data borang berikut:

name: "Tom"
age: "28"
email: "tom@example.com"
Salin selepas log masuk

Dalam pustaka net/http asli, kita perlu membaca data secara manual dari Badan permintaan dan kemudian menghuraikannya ke dalam jenis dan format yang sepadan. Kod sedemikian akan kelihatan sangat rumit dan kompleks.

Tetapi dalam rangka kerja Gin, kita boleh mengikat parameter ini ke dalam struktur, seperti ini:

type User struct {
    Name  string `form:"name"`
    Age   uint8  `form:"age"`
    Email string `form:"email"`
}

func CreateUser(c *gin.Context) {
    var user User
    if err := c.ShouldBind(&user); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }

    // 这里可以使用 user 结构体中的数据进行业务处理
    // ...
}
Salin selepas log masuk

Di sini, kami mentakrifkan struktur Pengguna dan menggunakan rangka kerja Gin Kaedah ShouldBind dalam binds parameter dalam permintaan kepada struktur. Setiap medan dalam struktur sepadan dengan kunci dalam data borang, dan dengan membina teg, kita boleh menentukan nama kunci.

Apabila parameter yang diminta tidak boleh diikat dengan betul, kaedah ShouldBind akan mengembalikan ralat dan kami boleh mengembalikan respons JSON yang sepadan berdasarkan ralat ini. Jika tidak, kita boleh menggunakan data terikat dalam struktur untuk langkah seterusnya.

Perlu diambil perhatian bahawa pengikatan parameter dalam rangka kerja Gin turut menyokong format data lain, seperti JSON, XML, dsb. Kami hanya perlu menentukan format yang sepadan apabila mengikat.

2. Pengesahan parameter
Melalui pengikatan parameter, kami boleh mengikat parameter dalam permintaan kepada struktur dan melaksanakan pemprosesan perniagaan seterusnya. Tetapi dalam pembangunan sebenar, kami juga perlu mengesahkan kesahihan parameter ini untuk mengelakkan serangan berniat jahat dan operasi yang salah.

Sebagai contoh, pada halaman pendaftaran, kami perlu mengesahkan kata laluan yang dimasukkan oleh pengguna untuk memastikan ia memenuhi keperluan kerumitan tertentu. Pada halaman log masuk, kami perlu mengesahkan bahawa nama pengguna dan kata laluan yang dimasukkan oleh pengguna adalah betul untuk mengelakkan serangan berniat jahat dan peretasan kekerasan. Pada ketika ini, kita perlu menggunakan fungsi pengesahan yang disediakan oleh rangka kerja Gin.

Dalam rangka kerja Gin, pustaka pengesah dalam bahasa Go digunakan secara lalai untuk pengesahan parameter. Kami hanya perlu menambah teg yang sepadan pada struktur, contohnya:

type User struct {
    Name  string `form:"name" binding:"required,min=2,max=10"`
    Age   uint8  `form:"age" binding:"required,gt=0,lt=128"`
    Email string `form:"email" binding:"required,email"`
}
Salin selepas log masuk

Di sini, kami menggunakan sintaks teg pengesah untuk menetapkan peraturan pengesahan bagi setiap medan. Contohnya, required menunjukkan bahawa medan ini mesti wujud; min menunjukkan panjang minimum medan jenis rentetan email menunjukkan bahawa ia mesti mematuhi keperluan format alamat e-mel, dsb.

Apabila parameter mengikat, jika parameter tidak boleh lulus pengesahan, rangka kerja Gin akan mengembalikan ralat dan kami boleh mengembalikan respons JSON yang sepadan berdasarkan ralat ini.

Sebagai contoh, jika format parameter tidak dapat mematuhi peraturan pengesahan yang berkaitan apabila mengikat struktur Pengguna dalam contoh, rangka kerja Gin akan mengembalikan mesej ralat yang sepadan:

{
    "error": "Key: 'User.Name' Error:Field validation for 'Name' failed on the 'min' tag
Key: 'User.Age' Error:Field validation for 'Age' failed on the 'gt' tag
Key: 'User.Email' Error:Field validation for 'Email' failed on the 'email' tag"
}
Salin selepas log masuk

Nota Diperlukan bahawa semasa proses pembangunan, kita harus cuba menetapkan semua peraturan pengesahan dalam definisi struktur, yang boleh mengurangkan gandingan kod secara berkesan dan menjadikan kod lebih mudah dibaca dan diselenggara.

3. Ringkasan
Fungsi pengikatan dan pengesahan parameter dalam rangka kerja Gin ialah salah satu fungsi yang paling biasa digunakan dalam pembangunan web. Pengikatan parameter memudahkan kami mendapatkan parameter dalam permintaan dan menukarnya kepada jenis dan format yang sepadan. Pengesahan parameter membolehkan kami mengesahkan kesahihan parameter untuk mengelakkan serangan berniat jahat dan operasi yang salah. Rangka kerja Gin menggunakan pustaka pengesah dalam bahasa Go untuk pengesahan parameter secara lalai Melalui sintaks teg, kami boleh menetapkan peraturan pengesahan untuk medan dalam struktur dengan mudah. Dalam pembangunan sebenar, kita harus menggunakan kedua-dua fungsi ini sebaik mungkin untuk meningkatkan kualiti kod dan keselamatan perniagaan dengan berkesan.

Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi pengikatan dan pengesahan parameter rangka kerja Gin. 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