Comments (3)
Hi @Manghud,
These feature is easy to implement, wrapping your handler.
So, some frameworks give you this functionality on easy way like Atreugo, Gramework and others.
Thanks!
from router.
@savsgio I'm not sure this is possible to implement by wrapping the handler if you want to add middleware before the routes but after the router's built-in redirection/HandleMethodNotAllowed
middleware. For example, if I wrap the handler like this:
r := router.New()
r.RedirectTrailingSlash = true
r.RedirectFixedPath = true
r.HandleMethodNotAllowed = true
r.GET("/hello", helloHandler)
fasthttp.ListenAndServe(":8080", func(ctx *fasthttp.RequestContext) {
// my middleware here
r.Handler(ctx)
})
The order of execution for a request to /hello
is this:
- my middleware wrapper function
router
'sRedirectTrailingSlash
,RedirectFixedPath
, andHandleMethodNotAllowed
logichelloHandler
What I would like is the ability to run them in this order:
router
'sRedirectTrailingSlash
,RedirectFixedPath
, andHandleMethodNotAllowed
logic- my middleware wrapper function
helloHandler
If I understand correctly, this is only possible with a Use
method or something similar, like @Manghud described, right? This is important to me because my middleware in this use case that runs on every route needs to hit the database (load a session, for example). I do not want to hit the database for simple redirects and method-not-allowed responses.
Additionally, without a Use
method on Group
s, I don't think it is possible to apply middleware specifically to a group.
from router.
Hi @winduptoy,
Sorry for delayed answer.
If you want thats behaviour, you must wrap the helloHandler
and not execute the middleware before the r.Handler
.
So if you need a simple API to use middlewares, you could use some of frameworks built on top of fasthttp.
from router.
Related Issues (20)
- Not removing superfluous path elements like //// HOT 5
- ServeFilesCustom responds for a long time when requesting a non existent file HOT 4
- Behavior change in 1.3.2 with double slashes when RedirectFixedPath is false HOT 4
- ServeFilesCustom calls PanicHandler if file does not exist HOT 2
- Consultation on route matching HOT 1
- Get Matched Route HOT 1
- Why this routing doesn't work? HOT 4
- Issue with catch-all parameter HOT 1
- How to integrate with Prometheus HOT 1
- Documentation for router.Lookup out of date HOT 2
- Group wide middlewares
- gotils is gpl HOT 2
- CORS allow ? HOT 1
- Path Route HOT 1
- how to serve files using embed? HOT 2
- incorrect regex match HOT 2
- path validation breaks group usage HOT 1
- panic: path must begin with '/' in path '' group.go:19 HOT 1
- Middleware for Group
- how to support path with and without trailing slash ? HOT 3
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 router.