Registering Middleware
Middleware is added to the request pipeline through AppBuilder.
Use builder.use<>() to register a middleware type:
mach::AppBuilder builder;
builder.use<LoggingMiddleware>();
auto app = builder.build();Once registered, the middleware participates in the request pipeline for the application.
Register Middleware Dependencies
Section titled “Register Middleware Dependencies”If a middleware has constructor dependencies, list them as additional template arguments when registering it.
For example:
class LoggingMiddleware {public: explicit LoggingMiddleware(mach::Logger& logger) : m_logger(logger) {}
void invoke(mach::Context& context, mach::Next& next) { m_logger.info("Before handler");
next();
m_logger.info("After handler"); }
private: mach::Logger& m_logger;};Register it with its dependency:
mach::AppBuilder builder;
builder.use<LoggingMiddleware, mach::Logger>();
auto app = builder.build();The dependency list must match the middleware constructor parameters in the same order.
For multiple dependencies:
builder.use<MyMiddleware, FirstService, SecondService>();Mach uses the registered services to construct the middleware when the application is built.
Register Multiple Middleware
Section titled “Register Multiple Middleware”An application can register multiple middleware:
mach::AppBuilder builder;
builder.use<ExceptionMiddleware>();builder.use<LoggingMiddleware, mach::Logger>();builder.use<SecurityMiddleware>();
auto app = builder.build();Each registered middleware becomes part of the same request pipeline.
The order of these registrations matters because it determines how middleware wraps later middleware and endpoints.
That behavior is covered in the next guide.
Register Before Building
Section titled “Register Before Building”Middleware is configured on AppBuilder, so registration happens before calling build():
mach::AppBuilder builder;
builder.use<LoggingMiddleware, mach::Logger>();
auto app = builder.build();After the application is built, the middleware pipeline is ready to process requests.
Next, you’ll learn how middleware registration order affects request and response execution.