Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menggunakan Ungkapan Biasa untuk Pemadanan URL dalam Go?

Bagaimanakah Saya Boleh Menggunakan Ungkapan Biasa untuk Pemadanan URL dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-27 04:25:11513semak imbas

How Can I Use Regular Expressions for URL Matching in Go?

Menggunakan Ungkapan Biasa untuk Pemadanan URL dalam Go

Dalam Go, pakej net/http menyediakan fungsi http.HandleFunc untuk mendaftar pengendali berfungsi kepada corak URL tertentu. Walau bagaimanapun, fungsi ini tidak boleh digunakan untuk memadankan URL menggunakan ungkapan biasa.

Untuk menggunakan ungkapan biasa bagi pemadanan URL, anda boleh mendaftarkan pengendali kepada subpokok berakar dan melakukan pemadanan dan penghalaan regexp selanjutnya dalam fungsi pengendali.

Sebagai contoh, kod berikut menunjukkan cara mendaftar pengendali untuk corak URL akar (/) dan menggunakan ungkapan biasa untuk memadankan tertentu corak:

import (
    "fmt"
    "net/http"
    "regexp"
)

var (
    rNum = regexp.MustCompile(`\d`)  // Matches URLs with digits
    rAbc = regexp.MustCompile(`abc`) // Matches URLs containing "abc"
)

func main() {
    http.HandleFunc("/", route)
    http.ListenAndServe(":8080", nil)
}

func route(w http.ResponseWriter, r *http.Request) {
    switch {
    case rNum.MatchString(r.URL.Path):
        digits(w, r)
    case rAbc.MatchString(r.URL.Path):
        abc(w, r)
    default:
        w.Write([]byte("Unknown Pattern"))
    }
}

func digits(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Has digits"))
}

func abc(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Has abc"))
}

Sebagai alternatif, anda boleh menggunakan perpustakaan pihak ketiga seperti Gorilla MUX, yang menyediakan penghalaan URL lanjutan dan keupayaan pemadanan regexp.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Ungkapan Biasa untuk Pemadanan URL 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