All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2025-10-30
- Core router implementation with path-based routing using matchit
- Support for multiple HTTP methods per route (GET, POST, PUT, DELETE, PATCH, OPTIONS)
- Path parameter extraction with automatic type conversion
- Tower Service trait integration for seamless middleware composition
- Response builders with standardized JSON envelope pattern:
success()for successful responses with datafailure()for error responses with structured errorsnot_found()for 404 responses with path informationempty()for status-only responses (e.g., 204 No Content)with_correlation_id()for request tracing
- Request extractors for type-safe data extraction:
parse_json_body()with 1MB size limit and Content-Type validationquery_params()for URL query string parsingpath_params()andpath_param()for path parameter extractionget_extension()for typed extension data
- Server utilities with graceful shutdown support (Ctrl+C and SIGTERM)
- HTTP/1.1 protocol support via hyper
- Comprehensive examples demonstrating progressive complexity:
hello_world- Minimal server with single routewith_state- Stateful routing with all extractorswith_middleware- Production-ready middleware stack
- Full test suite with 80%+ code coverage:
- Router tests (routing, method filtering, 404/405 handling)
- Response builder tests (envelope structure, serialization)
- Extractor tests (JSON parsing, query params, path params)
- Server tests (connection handling)
- Middleware tests (Tower layer composition)
- Complete documentation with rustdoc comments and usage examples
- README with quick start guide, API documentation, and examples
- JSON body size limit (1MB) prevents denial-of-service attacks
- Graceful shutdown ensures proper connection cleanup
- Request extensions provide secure context passing between middleware