Comments (2)
I believe this is correct behavior. Though I can understand the confusion. The PathPrefix
doesn't prefix all the set Path
routes per se, but in fact behaves just like Path
does. However, with the exception that it matches any path appended to the value. That may be a little verbose so, a little explanation!
In the source, the Route
type uses Matchers
to determine whether a request is matching a given Handler
. Think of a matcher like a regular expression and the route your creating is in essence, building up a regular expression.
In your code, the first statement:
r.Path( "/testpath")
You've essentially create a route that matches on specifically /testpath
. Continuing on...
r.Path("/testpath").PathPrefix("/prefix/")
When you add another matcher to the stack (it's sequential), it's says to match the criteria of /prefix/.*
after you've matched "/testpath". Therefore, you've essentially created a route that says match any request with the Matcher (or regex):
/testpath/prefix/.*
In lieu, think of the PathPrefix
Matcher, just like Path
in that it chains Matchers
. However, instead of matching strictly on the path given, it matches on anything beginning with the path given.
from mux.
Yeah, I worked it out eventually. PathPrefix seems like a generally poorly named and probably redundant function IMO. If a developer knows only one regex, it's probably .*
from mux.
Related Issues (20)
- [question] How to retrieve the handler func without the middleware? HOT 2
- [bug] HOT 17
- Path variable not parsed HOT 2
- [bug] : the link for gorilla mux logo is broken
- [feature] Add CONTRIBUTING.md HOT 4
- [bug]
- [question] Is it true? Is the GWT unarchived, for real? HOT 3
- CORS ERROR HOT 10
- JSON parsing failed HOT 7
- [BUG] Go can't find v2.0 HOT 1
- [BUG] MethodNotAllowedHandler does not work for subrouter with different routes HOT 9
- [BUG] Router does not distinguish between `/` and `%2F` in the request path HOT 1
- Cannot install gorilla/mux with new install command of go HOT 2
- [BUG] Index out of range in (*routeRegexp).Match HOT 1
- [FEATURE] Accidental omission of GetHeaders? HOT 1
- [BUG] API is probably broken for GetQueries per each method HOT 1
- [BUG] runtime error in (*routeRegexp).Match
- [FEATURE] Route metadata
- When I use the subrouter() method, Methods() only works on the last endpoint, and other than the last endpoint, the rest of the endpoints give a 404 instead of a 405 with the unrelated http method. HOT 3
- router.Host not working for me
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mux.