-
-
Notifications
You must be signed in to change notification settings - Fork 0
middleware
github-actions[bot] edited this page Mar 1, 2026
·
1 revision
NestForge supports route-targeted HTTP middleware through NestForgeFactory::configure_middleware(...).
NestMiddleware receives the raw request and a next callback.
use nestforge::{middleware, NextFn, NextFuture};
middleware!(RequestLogger, |req, next| {
{
println!("{} {}", req.method(), req.uri().path());
(next)(req).await
}
});Use configure_middleware(...) to apply middleware globally or only for selected route prefixes.
use nestforge::{MiddlewareConsumer, NestForgeFactory};
let app = NestForgeFactory::<AppModule>::create()?
.configure_middleware(|consumer: &mut MiddlewareConsumer| {
consumer.apply::<RequestLogger>().for_all_routes();
consumer
.apply::<AdminAuditMiddleware>()
.exclude(["/admin/health"])
.for_routes(["/admin"]);
});for_routes(["/users"]) matches /users and nested paths like /users/1.
You can also target specific HTTP methods:
use axum::http::Method;
use nestforge::MiddlewareRoute;
let app = NestForgeFactory::<AppModule>::create()?
.configure_middleware(|consumer: &mut MiddlewareConsumer| {
consumer
.apply::<AdminAuditMiddleware>()
.for_routes([MiddlewareRoute::get("/admin")]);
consumer
.apply::<WriteAuditMiddleware>()
.for_routes([MiddlewareRoute::methods("/users", [Method::POST, Method::PUT])]);
});This fills the Nest-style gap between global app middleware and route-level guards/interceptors:
- middleware handles raw HTTP concerns early
- guards decide access
- interceptors shape execution around handlers
Use middleware for concerns like request logging, header normalization, tenant extraction, and legacy cookie/session adaptation.
NestForge Docs | Home | Quick Start | Project Structure | GitHub Repo