mirror of https://github.com/gorilla/mux
Mirror of https://github.com/gorilla/mux
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.7 KiB
51 lines
1.7 KiB
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"] |
|
}
|
|
|