|
- package mux_test
-
- import (
- "fmt"
- "net/http"
-
- "github.com/gorilla/mux"
- )
-
- // This example demonstrates setting a regular expression matcher for
- // the header value. A plain word will match any value that contains a
- // matching substring as if the pattern was wrapped with `.*`.
- func ExampleRoute_HeadersRegexp() {
- r := mux.NewRouter()
- route := r.NewRoute().HeadersRegexp("Accept", "html")
-
- req1, _ := http.NewRequest("GET", "example.com", nil)
- req1.Header.Add("Accept", "text/plain")
- req1.Header.Add("Accept", "text/html")
-
- req2, _ := http.NewRequest("GET", "example.com", nil)
- req2.Header.Set("Accept", "application/xhtml+xml")
-
- matchInfo := &mux.RouteMatch{}
- fmt.Printf("Match: %v %q\n", route.Match(req1, matchInfo), req1.Header["Accept"])
- fmt.Printf("Match: %v %q\n", route.Match(req2, matchInfo), req2.Header["Accept"])
- // Output:
- // Match: true ["text/plain" "text/html"]
- // Match: true ["application/xhtml+xml"]
- }
-
- // This example demonstrates setting a strict regular expression matcher
- // for the header value. Using the start and end of string anchors, the
- // value must be an exact match.
- func ExampleRoute_HeadersRegexp_exactMatch() {
- r := mux.NewRouter()
- route := r.NewRoute().HeadersRegexp("Origin", "^https://example.co$")
-
- yes, _ := http.NewRequest("GET", "example.co", nil)
- yes.Header.Set("Origin", "https://example.co")
-
- no, _ := http.NewRequest("GET", "example.co.uk", nil)
- no.Header.Set("Origin", "https://example.co.uk")
-
- matchInfo := &mux.RouteMatch{}
- fmt.Printf("Match: %v %q\n", route.Match(yes, matchInfo), yes.Header["Origin"])
- fmt.Printf("Match: %v %q\n", route.Match(no, matchInfo), no.Header["Origin"])
- // Output:
- // Match: true ["https://example.co"]
- // Match: false ["https://example.co.uk"]
- }
|