Documentation
¶
Overview ¶
Package main demonstrates a JSON API server using go-supervisor with proper middleware layering and separation of concerns.
Middleware Architecture ¶
This example shows how to properly layer middleware with clean separation of concerns:
1. JSON Enforcer Middleware (examples/jsonapi/middleware):
- Only transforms response body content to JSON format
- Does NOT set any headers
- Wraps non-JSON responses in {"response": "content"}
- Preserves valid JSON responses as-is
2. Headers Middleware (runnables/httpserver/middleware/headers):
- Exclusively handles all HTTP header management
- Sets Content-Type, CORS, security headers, etc.
- Can be overridden by handlers if needed
3. Middleware Execution Order:
- Request flow: recovery -> security -> logging -> metrics -> headers -> handler
- Response flow: handler -> headers -> metrics -> logging -> security -> recovery
- Order is critical: recovery must be outermost, headers should be innermost
This separation ensures each middleware has a single responsibility and they compose cleanly without conflicts.
Click to show internal directories.
Click to hide internal directories.