Build production-grade request pipelines without framework helpers.
Middleware is a sequence of focused handlers. Each handler can:
- allow request to continue
- modify request context
- stop request with an error response
- Authentication middleware
- Permission/role middleware
- Validation middleware
- Route handler
- separation of concerns
- reusable logic across routes
- easier testing by layer
Pseudo-flow:
- keep array of middleware functions
- execute middleware[index]
- pass next function to move forward
- handle thrown errors centrally
- middleware should do one job
- return early on failure
- keep shared context explicit
- do not hide side effects
Implement middleware for POST /tasks:
- require fake token header (for learning)
- validate title type and max length
- reject invalid status values
Return structured error JSON consistently.