Go で正規表現を使用して URL をマップする
Go では、正規表現を使用して URL を照合することで、より柔軟で表現力豊かな URL ルーティングが可能になります。ただし、この目的で http.HandleFunc() 関数に依存するのは理想的ではありません。
http.HandleFunc() 関数は、主に固定パスまたはルート化されたサブツリーを照合することを目的としています。正規表現の使用はサポートされていません。これを実現するには、ルート化されたサブツリー (/ など) にハンドラーを登録し、ハンドラー内でカスタム正規表現のマッチングとルーティングを実装する必要があります。
次の例を考えてみましょう:
import ( "fmt" "net/http" "regexp" ) var rNum = regexp.MustCompile(`\d`) // Matches URLs with digits var 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")) }
このコード:
あるいは、Gorilla MUX などの外部ライブラリを利用して、より高度な機能を実現することもできます。および多用途の URL ルーティング機能。
以上がGo で柔軟な URL ルーティングに正規表現を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。