-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
* Add example usage for Route.HeadersRegexp * Improve example_route_test.go style
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
package mux_test | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
elithrar
Contributor
|
||
|
||
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"] | ||
} |
All the other test files belong to the
mux
package. Why is this one different?