Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memadankan URL dengan Ungkapan Biasa dalam Go?

Bagaimana untuk Memadankan URL dengan Ungkapan Biasa dalam Go?

DDD
DDDasal
2024-12-10 16:09:14337semak imbas

How to Match URLs with Regular Expressions in Go?

Memadankan URL dengan Ungkapan Biasa dalam Go

In Go, http.HandleFunc() direka untuk mengendalikan corak URL tertentu. Walau bagaimanapun, ia tidak sesuai untuk memadankan corak menggunakan ungkapan biasa.

Penyelesaian Alternatif:

Sebaliknya, pertimbangkan penyelesaian berikut:

  1. HandleFunc() dengan Subtree Berakar: Berikan pengendali kepada akar subtree (cth., "/") dan lakukan pemadanan regexp dalam fungsi pengendali itu sendiri.
// Match everything
http.HandleFunc("/", route)

var rNum = regexp.MustCompile(`\d`)  // Has digit(s)

func route(w http.ResponseWriter, r *http.Request) {
    if rNum.MatchString(r.URL.Path) {
        digits(w, r)
    } else {
        w.Write([]byte("No digits found"))
    }
}
  1. Pustaka Luaran: Gunakan perpustakaan luaran seperti Gorilla MUX (github .com/gorilla/mux), yang memberikan lebih kawalan ke atas penghalaan dan menyokong ekspresi biasa padanan.

Contohnya, dengan Gorilla MUX:

r := mux.NewRouter()
r.HandleFunc("/digits", digitsHandler).Methods("GET")
r.HandleFunc("/abc", abcHandler).Methods("POST")

http.Handle("/", r)

Setiap kaedah ini membolehkan padanan URL yang lebih terperinci berdasarkan keperluan khusus.

Atas ialah kandungan terperinci Bagaimana untuk Memadankan URL dengan Ungkapan Biasa dalam Go?. 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