Expand description
§Reinhardt REST
Unified REST API framework for Reinhardt.
This crate provides a complete REST API framework by integrating:
- Serializers: Data serialization and validation (from reinhardt-serializers)
- Parsers: Request body parsing (from reinhardt-parsers)
- Authentication: JWT, Token, Session, Basic auth (from reinhardt-auth)
- Routers: Automatic URL routing for ViewSets (from reinhardt-routers)
- Browsable API: HTML interface for API exploration (from reinhardt-browsable-api)
§Quick Start
use reinhardt_rest::parsers::JSONParser;
// Create a JSON parser for handling JSON request bodies
let parser = JSONParser::new();For router integration, see the reinhardt_urls::routers crate.
§Architecture
Key modules in this crate:
browsable_api: HTML interface for interactive API explorationfilters: Query parameter filtering for list endpointsmetadata: API metadata and schema introspection utilitiesserializers: Data serialization, deserialization, and validationthrottling: Request rate limiting and throttle policiesversioning: API versioning strategies (URL path, header, query)authentication: REST authentication backends (JWT, Token, Session, Basic)response: Typed API response wrappers and pagination supportschema: OpenAPI schema generation (requiresopenapifeature)
§Feature Flags
| Feature | Default | Description |
|---|---|---|
serializers | enabled | Data serialization and validation components |
parsers | enabled | Request body parsing (JSON, Form, Multipart) |
jwt | disabled | JWT authentication backend |
filters | disabled | Query parameter filtering for querysets |
throttling | disabled | Request rate limiting policies |
versioning | disabled | API versioning strategies |
metadata | disabled | API introspection and schema metadata |
pagination | disabled | Cursor and page-number pagination |
browsable-api | disabled | HTML browsable API interface |
openapi | disabled | OpenAPI/Swagger schema generation and UI |
rest-full | disabled | Enables all REST features |
§Testing
This crate contains unit tests for the integrated modules.
Integration tests are located in tests/integration/.
Re-exports§
pub use authentication::AuthResult;pub use response::ApiResponse;pub use response::IntoApiResponse;pub use response::ResponseBuilder;pub use crate::serializers::ModelSerializer;pub use crate::serializers::UniqueTogetherValidator;pub use crate::serializers::UniqueValidator;pub use crate::browsable_api::*;
Modules§
- authentication
- REST API authentication
- browsable_
api - Browsable API for Reinhardt
- filters
- Type-safe filtering backends for Reinhardt framework
- metadata
- Reinhardt Metadata
- negotiation
- Content negotiation for request/response formats. Content negotiation for Reinhardt
- pagination
- Pagination strategies (page-based, cursor, limit-offset).
- parsers
- Request body parsers (JSON, form, multipart, etc.).
- response
- REST API response types
- serializers
- Reinhardt Serializers
- throttling
- Rate limiting for Reinhardt framework
- versioning
- Reinhardt Versioning
Macros§
- versioned_
handler - Macro for creating versioned handlers easily
- versioned_
url - Macro for easy URL building
Structs§
- Allow
Any - AllowAny - grants permission to all requests
- Anonymous
User - Anonymous user - represents a non-authenticated visitor
- Content
Negotiator - Content Negotiation - Re-exports from reinhardt-negotiation Content negotiator for selecting appropriate renderer
- File
Upload Parser - Raw file upload parser
- Form
Parser - Form parser for application/x-www-form-urlencoded content type
- IsAdmin
User - IsAdminUser - requires the user to be an admin
- IsAuthenticated
- IsAuthenticated - requires the user to be authenticated
- IsAuthenticated
OrRead Only - IsAuthenticatedOrReadOnly - authenticated for writes, allow reads
- JSON
Parser - JSON parser for application/json content type
- Json
Serializer - JSON serializer implementation
- Media
Type - Media type representation
- Multi
Part Parser - MultiPart parser for multipart/form-data content type (file uploads)
- Paginated
Response - Paginated response wrapper
- Simple
User - Simple user implementation with basic fields
Enums§
- Serializer
Error - Errors that can occur during serialization
Traits§
- Auth
Backend - Authentication backend trait
- Deserializer
- Deserializer trait for one-way deserialization
- Parser
- Trait for request body parsers
- Permission
- Permission trait - defines permission checking interface
- Serializer
- Core serializer trait for converting between input and output representations
- User
Deprecated - User trait - Core authentication trait
Type Aliases§
- Parse
Error - Type alias for parser errors, using the framework’s
Errortype. - Parse
Result - Type alias for parser results, using the framework’s
Resulttype.