


Bagaimana untuk melaksanakan pengesahan borang dalam rangka kerja WEB bahasa Go?
Dengan populariti aplikasi web, pengesahan borang diterima pakai secara meluas sebagai teknologi asas untuk memastikan integriti, kebolehpercayaan dan keselamatan data. Pengesahan borang juga memainkan peranan penting dalam rangka kerja web bahasa Go.
Dalam rangka kerja web bahasa Go, terdapat banyak cara untuk melaksanakan pengesahan borang. Artikel ini akan memperkenalkan empat kaedah yang paling biasa digunakan, iaitu:
- Gunakan ungkapan biasa
- Gunakan pustaka pengesahan borang
- Pengesah borang tersuai
- Menggunakan pengikatan model
- Menggunakan ungkapan biasa
Ungkapan biasa ialah alat yang paling biasa digunakan untuk pengesahan borang. Dalam bahasa Go, pengesahan borang adalah sangat mudah menggunakan ungkapan biasa. Berikut ialah contoh mudah yang menggunakan ungkapan biasa untuk mengesahkan alamat e-mel yang dimasukkan oleh pengguna:
func validateEmail(email string) bool { emailRegex := regexp.MustCompile(`^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$`) return emailRegex.MatchString(email) }
Dalam kod di atas, pakej regexp dalam bahasa Go dipanggil dan ungkapan biasa ditakrifkan menggunakan literal rentetan ungkapan. Seterusnya gunakan fungsi MatchString() untuk mengesahkan sama ada alamat e-mel yang dimasukkan oleh pengguna memenuhi keperluan ungkapan biasa. Fungsi mengembalikan benar jika alamat e-mel yang dimasukkan oleh pengguna sepadan dengan ungkapan biasa, jika tidak ia mengembalikan palsu.
Menggunakan ungkapan biasa untuk pengesahan borang adalah sangat mudah, tetapi ia juga mempunyai beberapa kelemahan. Ungkapan biasa boleh menjadi sangat kompleks dan sukar untuk dikekalkan, terutamanya bagi mereka yang tidak biasa dengan ungkapan biasa.
- Menggunakan perpustakaan pengesahan borang
Terdapat juga banyak perpustakaan pengesahan borang dalam bahasa Go, antaranya yang lebih popular ialah govalidator dan validator. Perpustakaan ini menjadikannya pantas dan mudah untuk mengesahkan data borang tanpa perlu menulis ungkapan biasa yang kompleks. Berikut ialah contoh menggunakan pustaka pengesah untuk mengesahkan borang:
type User struct { Name string `validate:"required"` Email string `validate:"required,email"` } func validateForm(user User) []string { var errors []string validate := validator.New() err := validate.Struct(user) if err != nil { for _, err := range err.(validator.ValidationErrors) { errors = append(errors, err.Field()+" is "+err.Tag()) } } return errors }
Dalam kod di atas, kami mentakrifkan struktur Pengguna, yang mengandungi dua medan: Nama dan E-mel, dan gunakan teg pengesahan untuk pengesahan. Seterusnya, gunakan fungsi validator.New() untuk mencipta objek validator dan memanggil fungsi Struct() untuk pengesahan borang. Jika pengesahan borang gagal, ralat tidak kosong dan maklumat ralat disimpan dalam tatasusunan ralat dan dikembalikan.
- Pengesah borang tersuai
Selain menggunakan ungkapan biasa dan pustaka pengesahan borang, kami juga boleh menyesuaikan pengesah borang. Dalam bahasa Go, jika kami mempunyai beberapa keperluan pengesahan khusus kami sendiri, kami boleh menggunakan pengesah tersuai untuk melaksanakannya. Berikut ialah contoh menggunakan pengesah tersuai untuk mengesahkan sama ada umur pelajar memenuhi keperluan:
type Student struct { Name string Age int } func (s *Student) Validate() error { if s.Age < 0 || s.Age > 120 { return errors.New("age must be between 0 and 120") } return nil } func main() { s := &Student{"Tom", 130} err := s.Validate() if err != nil { fmt.Println(err) } }
Dalam kod di atas, kami mentakrifkan struktur Pelajar dan melaksanakan fungsi Validate(). Dengan melaksanakan fungsi Validate(), kami boleh menyesuaikan setiap medan struktur Pelajar, yang sangat berguna untuk pengesah borang tersuai.
- Menggunakan pengikatan model
Menggunakan pengikatan model ialah satu lagi kaedah pengesahan bentuk yang sangat mudah dalam bahasa Go. Menggunakan pengikatan model, kami boleh mengikat data borang terus ke dalam struktur data dan mengautomasikan pengesahan borang. Berikut ialah contoh menggunakan pengikatan model:
type Address struct { City string `form:"city"` State string `form:"state"` } func main() { r := gin.Default() r.GET("/address", func(c *gin.Context) { var address Address err := c.Bind(&address) if err != nil { c.String(http.StatusBadRequest, err.Error()) return } c.String(http.StatusOK, fmt.Sprintf("city=%s,state=%s", address.City, address.State)) }) r.Run() }
Dalam kod di atas, kami menggunakan rangka kerja Gin dan mentakrifkan struktur Alamat dan menandakannya dengan teg borang. Seterusnya, kami menggunakan fungsi c.Bind() untuk mengikat data borang kepada struktur Alamat dan melaksanakan pengesahan borang. Jika pengesahan borang gagal, mesej ralat 400 Bad Request dikembalikan, jika tidak, 200 OK dikembalikan dan maklumat alamat dikembalikan kepada klien.
Ringkasnya, pengesahan borang adalah sangat penting dalam reka bentuk aplikasi web, dan terdapat banyak kaedah untuk melaksanakan pengesahan borang dalam rangka kerja web bahasa Go. Bergantung pada situasi, anda boleh memilih untuk mengesahkan data borang menggunakan ungkapan biasa, pustaka pengesahan borang, pengesah borang tersuai atau pengikatan model. Dalam pembangunan sebenar, kaedah yang sesuai harus dipilih mengikut keperluan projek, dan dikembangkan dan dioptimumkan dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengesahan borang dalam rangka kerja WEB bahasa Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Dua cara untuk menentukan struktur dalam bahasa Go: perbezaan antara VAR dan jenis kata kunci. Apabila menentukan struktur, pergi bahasa sering melihat dua cara menulis yang berbeza: pertama ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

GO Pointer Syntax dan menangani masalah dalam penggunaan perpustakaan Viper semasa pengaturcaraan dalam bahasa Go, adalah penting untuk memahami sintaks dan penggunaan petunjuk, terutama dalam ...
