Request Pipeline
Middleware
Express-style request middleware
Middleware runs before routing — the same mental model as Express
middleware. Build one with gonest.NewMiddleware(func(middleware *gonest.Middleware) {...}).
var RequestIdMiddleware = gonest.NewMiddleware(func(middleware *gonest.Middleware) {
middleware.Handler(func(ctx *gonest.RestContext, next gonest.Next) {
ctx.SetHeader("X-Request-Id", "...")
next(ctx)
})
})Calling next(ctx) continues the chain. Omitting it short-circuits the
request — nothing downstream runs.
Global vs. controller-scoped
var AppModule = gonest.NewModule(func(module *gonest.Module) {
module.Use(RequestIdMiddleware) // global — root module only
})
var UserController = gonest.NewController(func(controller *gonest.Controller) {
controller.Use(SomeOtherMiddleware) // controller-scoped
})Global middleware (Module.Use, root module only) always runs before
controller-level middleware (Controller.Use).