Browse Source
* Add example usage for Route.HeadersRegexp * Improve example_route_test.go stylepull/245/merge
2 changed files with 53 additions and 1 deletions
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
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"]
|
||||
} |
||||
Loading…
Reference in new issue