Open emilgpa opened 10 years ago
Currently not implemented or planned, but I leave this open as a feature request.
:+1: on this too great job
+1. It's useful when you can build url string by url name and parameters. Like in http://www.gorillatoolkit.org/pkg/mux
Registered URLs can be built, or "reversed", which helps maintaining
references to resources.
+1 very useful feature.
I solve it like this https://github.com/alehano/reverse
+1
I solved it like this, with a proxy function:
func alternativeHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
ps = append(ps, httprouter.Param {
Key: "extraParameter",
Value: "someValue",
})
defaultHandler(w, r, ps)
}
Szenario: I have a second route and that route has 1 parameter less then the default route and I want that parameter to have the value someValue
if the alternative route is used.
This feature would be nice, because you can store all routes, handler names and parameters in a map.
I planned for incoming GET requests at example.com/api/v1
to respond with JSON that maps all available routes and methods of the API. Or is their already a way to do this without the help of named routes?
+1 for the need for reverse routing.
Using named routes is one way to achieve reverse routing, but there might be other ways too. For example, the leaf nodes of the tree might be wrapped into some exported type that allows a full string route URL to be reconstructed, given a list of path parameter values.
The GET method would need to be changed to return the leaf node. e.g.
router := httprouter.New()
router.GET("/", Index)
helloRoute := router.GET("/hello/:name:/role/:role", Hello)
...
helloRoute.reverse("Fred", "Staff")
to give the path /hello/Fred/role/Staff
.
I think this issue similar to #167.
Lack of this feature forced me to dump this library because it is also very important when it comes to collecting application metrics. For instance, when we store metrics, we use "labels" to fine tune/visualise reports. If you are to store request/response metrics, you want to know which route the collected metric is associated with. Having a middleware where the http.Request allows us to extract route name with for example httprouter.RouteNameFromContext(r.Context())
would make life very easy otherwise things get very complex/messy.
The client_create
below is the name of the route for Prometheus.
# HELP http_request_counter Number of HTTP requests
http_response_counter{size="20",route="client_create"} 40
@BentCoder https://github.com/julienschmidt/httprouter/blob/master/router.go#L132
(not yet in a tagged release, use go get github.com/julienschmidt/httprouter@master
)
@BentCoder https://github.com/julienschmidt/httprouter/blob/master/router.go#L132 (not yet in a tagged release, use
go get github.com/julienschmidt/httprouter@master
)
Not sure if it does what I mean which is same as this. I hope I made it clearer now.
Hello! I would like know if is possible put a name to routes like as:
If this is not possible, Do you plan add this feature?
P.D.: Very nice perfomance :+1:
Best, Emilio