Comments (7)
This functionality was made available in master (but not yet released)
https://pkg.go.dev/github.com/julienschmidt/httprouter@master#Router.SaveMatchedRoutePath
https://pkg.go.dev/github.com/julienschmidt/httprouter@master#Params.MatchedRoutePath
router.SaveMatchedRoutePath=true
// in request
registeredPath := ps.MatchedRoutePath()
from httprouter.
@julienschmidt any chance to have a new tagged release for all commits since 2019?
from httprouter.
I am also looking for this feature 😃 I'm using prometheus to instrument my code and I'd like to use each endpoint path as label for each of my metrics, but right now, for paths using url params I get a different path for every id that I use, which is wrong because I end up with n
different metrics instead of one.
from httprouter.
I came up with a quick hack. Inside your handler, you can iterate over ps httprouter.Params
(which is internally a []{key, value}) and then in your request.URL.Path
, replace each value by it's key, preceded by a :
. Like this:
registeredPath := request.URL.Path
for _, param := range ps {
registeredPath = strings.Replace(registeredPath, param.Value, fmt.Sprintf(":%s", param.Key), 1)
}
fmt.Println(registeredPath)
And you can do the same with router.LookUp
as it returns httprouter.Params
as well.
Not the most elegant solution but it gets the job done. Hope it helps.
from httprouter.
Related Issues (20)
- Run into 404 instead of graphql playground when using gqlgen with httprouter HOT 1
- How to use this custom middleware HOT 1
- Matching multiple named parameters HOT 1
- ServeFiles not able to serve static files HOT 2
- How can I receive multiple parameters in GET request? HOT 3
- Is it possible to bind one router to some path in another router? HOT 2
- panic: '/hello/:name' in new path '/hello/:name' conflicts with existing wildcar
- Why make catchAll form so special HOT 2
- httprouter.ParamsWithContext(r.Context()) is returning []
- Question: will re-registering a handler work properly?
- Fails with "embed" package HOT 1
- Dump all registered routes HOT 3
- Improve longestCommonPrefix and add unit tests HOT 1
- Question: How can I embed swagger UI? HOT 2
- Feature Request: Support multi-wildcard names for same tree branch HOT 1
- panic: path must begin with '/' in path 'GET'
- List all registered endpoint httprouter
- what is the empty path node used for? HOT 1
- Unable to load jsx files because "file.jsx was blocked because of a disallowed MIME type text/plain" HOT 2
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 httprouter.