Apabila kami membangunkan aplikasi web, kami selalunya perlu mengesahkan parameter pertanyaan dalam URL. Sebagai contoh, kita mungkin perlu menyemak sama ada parameter pertanyaan mengandungi nilai yang sah atau mematuhi format tertentu. Dalam golang, kita boleh menggunakan ungkapan biasa untuk melaksanakan pengesahan ini. Dalam artikel ini, kami akan menerangkan cara menggunakan ungkapan biasa untuk mengesahkan parameter pertanyaan dalam URL.
Mula-mula, kita perlu menghuraikan parameter pertanyaan dalam URL. Dalam golang, kita boleh menggunakan fungsi ParseQuery() dalam pakej net/url untuk melaksanakan fungsi ini. Berikut ialah contoh:
package main import ( "fmt" "net/url" ) func main() { u, _ := url.Parse("http://example.com/path?a=1&b=2&c=3") q := u.Query() fmt.Println(q.Get("a")) fmt.Println(q.Get("b")) fmt.Println(q.Get("c")) }
Menjalankan kod di atas akan mengeluarkan:
1 2 3
Seterusnya, kita perlu menulis biasa ungkapan untuk mengesahkan parameter pertanyaan. Katakan kami ingin mengesahkan bahawa nilai parameter pertanyaan "nama" sepadan dengan ungkapan biasa "^[a-zA-Z]+$", iaitu, ia hanya mengandungi huruf. Kita boleh menggunakan pakej regexp dalam golang untuk menulis pengesah ungkapan biasa ini. Berikut ialah contoh:
package main import ( "fmt" "net/url" "regexp" ) func validateName(name string) bool { reg := regexp.MustCompile("^[a-zA-Z]+$") return reg.MatchString(name) } func main() { u, _ := url.Parse("http://example.com/path?name=John") q := u.Query() name := q.Get("name") if validateName(name) { fmt.Println("Name is valid") } else { fmt.Println("Name is invalid") } }
Sekarang kita telah menulis pengesah regex, kita boleh Pengesah ini dilaksanakan untuk setiap parameter pertanyaan. Berikut ialah contoh:
package main import ( "fmt" "net/url" "regexp" ) func validateName(name string) bool { reg := regexp.MustCompile("^[a-zA-Z]+$") return reg.MatchString(name) } func validateAge(age string) bool { reg := regexp.MustCompile("^[0-9]+$") return reg.MatchString(age) } func main() { u, _ := url.Parse("http://example.com/path?name=John&age=35") q := u.Query() name := q.Get("name") age := q.Get("age") if validateName(name) { fmt.Println("Name is valid") } else { fmt.Println("Name is invalid") } if validateAge(age) { fmt.Println("Age is valid") } else { fmt.Println("Age is invalid") } }
Menjalankan kod di atas akan mengeluarkan:
Name is valid Age is valid
Akhir sekali, jika kita perlu mengesahkan pertanyaan Jenis parameter berubah, seperti umur berubah daripada nombor kepada sebulan, atau kami memerlukan peraturan pengesahan yang lebih ketat, kami perlu mengubah suai dan mengoptimumkan pengesah kami dengan sewajarnya. Berikut ialah contoh:
package main import ( "fmt" "net/url" "regexp" ) func validateName(name string) bool { reg := regexp.MustCompile("^[a-zA-Z]+$") return reg.MatchString(name) } func validateMonth(month string) bool { reg := regexp.MustCompile("^([1-9]|1[0-2])$") return reg.MatchString(month) } func main() { u, _ := url.Parse("http://example.com/path?name=John&month=9") q := u.Query() name := q.Get("name") month := q.Get("month") if validateName(name) { fmt.Println("Name is valid") } else { fmt.Println("Name is invalid") } if validateMonth(month) { fmt.Println("Month is valid") } else { fmt.Println("Month is invalid") } }
Menjalankan kod di atas akan mengeluarkan:
Name is valid Month is valid
Jika peraturan pengesahan untuk parameter pertanyaan lebih kompleks, kita boleh menggunakan ungkapan biasa untuk mengesahkannya atau menggunakan kaedah lain seperti Pengesahan songsang atau padanan corak. Tidak kira bagaimana kami melaksanakan pengesah, kami perlu memastikan bahawa aplikasi web kami boleh berjalan dengan selamat dan boleh dipercayai.
Atas ialah kandungan terperinci Bagaimana untuk mengesahkan parameter pertanyaan dalam URL menggunakan ungkapan biasa dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!