gitee.com/ks-custle/core-gm@v0.0.0-20230922171213-b83bdd97b62c/mux/example_route_test.go (about) 1 package mux_test 2 3 import ( 4 "fmt" 5 6 http "gitee.com/ks-custle/core-gm/gmhttp" 7 "gitee.com/ks-custle/core-gm/mux" 8 ) 9 10 // This example demonstrates setting a regular expression matcher for 11 // the header value. A plain word will match any value that contains a 12 // matching substring as if the pattern was wrapped with `.*`. 13 func ExampleRoute_HeadersRegexp() { 14 r := mux.NewRouter() 15 route := r.NewRoute().HeadersRegexp("Accept", "html") 16 17 req1, _ := http.NewRequest("GET", "example.com", nil) 18 req1.Header.Add("Accept", "text/plain") 19 req1.Header.Add("Accept", "text/html") 20 21 req2, _ := http.NewRequest("GET", "example.com", nil) 22 req2.Header.Set("Accept", "application/xhtml+xml") 23 24 matchInfo := &mux.RouteMatch{} 25 fmt.Printf("Match: %v %q\n", route.Match(req1, matchInfo), req1.Header["Accept"]) 26 fmt.Printf("Match: %v %q\n", route.Match(req2, matchInfo), req2.Header["Accept"]) 27 // Output: 28 // Match: true ["text/plain" "text/html"] 29 // Match: true ["application/xhtml+xml"] 30 } 31 32 // This example demonstrates setting a strict regular expression matcher 33 // for the header value. Using the start and end of string anchors, the 34 // value must be an exact match. 35 func ExampleRoute_HeadersRegexp_exactMatch() { 36 r := mux.NewRouter() 37 route := r.NewRoute().HeadersRegexp("Origin", "^https://example.co$") 38 39 yes, _ := http.NewRequest("GET", "example.co", nil) 40 yes.Header.Set("Origin", "https://example.co") 41 42 no, _ := http.NewRequest("GET", "example.co.uk", nil) 43 no.Header.Set("Origin", "https://example.co.uk") 44 45 matchInfo := &mux.RouteMatch{} 46 fmt.Printf("Match: %v %q\n", route.Match(yes, matchInfo), yes.Header["Origin"]) 47 fmt.Printf("Match: %v %q\n", route.Match(no, matchInfo), no.Header["Origin"]) 48 // Output: 49 // Match: true ["https://example.co"] 50 // Match: false ["https://example.co.uk"] 51 }