mirror of
https://github.com/golang/go
synced 2024-11-26 02:27:56 -07:00
net/http: add Request.Pattern
This commit is contained in:
parent
ba9c445f16
commit
c6e32742c4
1
api/next/66405.txt
Normal file
1
api/next/66405.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
pkg net/http, type Request struct, Pattern string #66405
|
3
doc/next/6-stdlib/99-minor/net/http/66405.md
Normal file
3
doc/next/6-stdlib/99-minor/net/http/66405.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
For inbound requests, the new [Request.Pattern] field contains the [ServeMux]
|
||||||
|
pattern (if any) that matched the request. This field is not set when
|
||||||
|
`GODEBUG=httpmuxgo121=1` is set.
|
@ -320,6 +320,10 @@ type Request struct {
|
|||||||
// redirects.
|
// redirects.
|
||||||
Response *Response
|
Response *Response
|
||||||
|
|
||||||
|
// Pattern is the [ServeMux] pattern that matched the request.
|
||||||
|
// It is empty if the request was not matched against a pattern.
|
||||||
|
Pattern string
|
||||||
|
|
||||||
// ctx is either the client or server context. It should only
|
// ctx is either the client or server context. It should only
|
||||||
// be modified via copying the whole Request using Clone or WithContext.
|
// be modified via copying the whole Request using Clone or WithContext.
|
||||||
// It is unexported to prevent people from using Context wrong
|
// It is unexported to prevent people from using Context wrong
|
||||||
|
@ -1527,7 +1527,7 @@ func TestPathValueNoMatch(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPathValue(t *testing.T) {
|
func TestPathValueAndPattern(t *testing.T) {
|
||||||
for _, test := range []struct {
|
for _, test := range []struct {
|
||||||
pattern string
|
pattern string
|
||||||
url string
|
url string
|
||||||
@ -1568,6 +1568,9 @@ func TestPathValue(t *testing.T) {
|
|||||||
t.Errorf("%q, %q: got %q, want %q", test.pattern, name, got, want)
|
t.Errorf("%q, %q: got %q, want %q", test.pattern, name, got, want)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if r.Pattern != test.pattern {
|
||||||
|
t.Errorf("pattern: got %s, want %s", r.Pattern, test.pattern)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
server := httptest.NewServer(mux)
|
server := httptest.NewServer(mux)
|
||||||
defer server.Close()
|
defer server.Close()
|
||||||
|
@ -2682,7 +2682,7 @@ func (mux *ServeMux) ServeHTTP(w ResponseWriter, r *Request) {
|
|||||||
if use121 {
|
if use121 {
|
||||||
h, _ = mux.mux121.findHandler(r)
|
h, _ = mux.mux121.findHandler(r)
|
||||||
} else {
|
} else {
|
||||||
h, _, r.pat, r.matches = mux.findHandler(r)
|
h, r.Pattern, r.pat, r.matches = mux.findHandler(r)
|
||||||
}
|
}
|
||||||
h.ServeHTTP(w, r)
|
h.ServeHTTP(w, r)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user