-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add wildcard for method
argument in Handle ?
#29
Comments
I think it would be nice to add a separate method to add a route that can accept any methods at the specified address, like r.HandleAny("/route/path", func(ctx *fasthttp.RequestCtx) { ... }) |
Why do you need to handle any method from one handler?? When I say any method, i mean unknown methods. That could generate unexpected behaviours and maybe sometimes need to check if the http method is valid.
This route should accept The following request returns an status code and other things:
Maybe if you need to authenticate the request you could wrap your handlers (like a middleware) and validate. Or if you want to handle some methods for the same handler you could do: validMethods := []string{"GET", "POST", "UNICORN"}
handler := func(ctx *fasthttp.RequestCtx) { ... }
for _, method := range validMethods {
router.Handle(method, "/some/path", handler)
} I don't sure to add a wildcard method in the router, because like i said, it could generate unexpected behaviours and errors. So you must need to know what HTTP methods are expected, therefore a dirty code. |
@savsgio The I expect that I will not have to juggle either |
So if if the method it's not important for you, the routes are important or always will you use a wild path ( I ask you, because if it's true. Use fasthttp without the router is the best option. (In your case) |
It's a good point for add the wild method |
For example, I want to use routes for Rest API and for websocket connection: r := router.New()
r.GET("/users", getAllUsers)
r.GET("/users/{id:[0-9]+}", getSingleUser)
r.POST("/users", createUser)
r.DELETE("/users/{id:[0-9]+}", removeUser)
// NOTE: I don't care about methods, because WebSocket
r.HandleAny("/ws", handleWebSocketActions)
// or, if you just change behaviour for Handle function:
r.Handle("{method:*}", "/ws", handleWebSocketActions)
s := new(fasthttp.Server)
s.Handler = r.Handler Why WebSocket handler use |
And why not? The websocket connection only works if method is GET, if not the returned code should be |
Suppose I did not choose the most obvious example, but instead of WebSocket, you can take any other HTTP protocol that does not require specific methods or requires a range of them. In any case, the |
I'm working on it! |
I've just released v1.1.0 😉 Please, check: https://pkg.go.dev/github.com/fasthttp/router?tab=doc#Router.ANY |
Hi 👋
Proposal
What do you think about adding the possibility to pass a wildcard to the
method
argument in theHandle
function ?It would be great to permit to just pass all requests, independently from the method, to the same handler.
Use case
I have a service which for a specific Route:
The wildcard on the URL is super handy here because it permits to just write the base URL to the route (ex:
/products/{any:*}
) and call my handler doing the authentication and then pass-through. Therefore if I add new endpoints in my destination service, I won't need to update this one.But since there is no equivalent for the methods, if I add endpoints with new methods in my destination service, I need to think to add equivalents in the authentication one. Making the maintainability harder and more error prone.
Thank you for considering this proposal and for this amazing router!
The text was updated successfully, but these errors were encountered: