OASert
OASert is a high-performance Rust library for runtime validation of HTTP requests against OpenAPI 3.x specifications. It provides a comprehensive suite of tools for traversing, validating, and caching OpenAPI document structures to ensure strict compliance with defined API contracts during request processing.
Core Capabilities
-
Comprehensive Request Validation
Performs rigorous validation of HTTP request elements (payloads, headers, query parameters, path parameters) against OpenAPI v3.x specifications, ensuring complete compliance with defined schemas. -
High-Performance Validator Caching
Implements a thread-safe, concurrent caching infrastructure powered byDashMap(v7.0) that minimizes redundant validator instantiations and optimizes memory usage. -
Advanced Specification Traversal
Provides sophisticated algorithms for navigating complex OpenAPI documents, with robust handling of nested$refreferences through pointer resolution and circular reference detection. -
Validation Error Reporting
Detailed error reporting with specific categories like missing properties, invalid types, or unsupported schema versions. -
Supports OpenAPI Drafts
Includes support for both OpenAPI 3.0.x (Draft 4) and OpenAPI 3.1.x (Draft 2020-12).
Installation
Add OASert to your Cargo.toml:
[]
= "0.1.1"
Basic Usage
Initializing the Validator
- Parse your OpenAPI specification into a
serde_json::Value. - Create an
OpenApiPayloadValidatorusing the parsed specification. - Pass incoming requests to the validator
See a full example using hyper here
Components
1. ValidatorCache
Efficient caching mechanism for validators to avoid repeated instantiations.
- Insert or retrieve validators dynamically.
- Clear the cache when needed.
- Automatically create validators for specific IDs if not cached.
2. OpenApiTraverser
Utility class to traverse OpenAPI specifications with support for:
- Resolving
$refpointers. - Fetching required or optional specification nodes.
- Handling complex paths and parameters.
3. OpenApiTypes
Type mapping utility to convert OpenAPI types (string, boolean, etc.) into native Rust types.
4. Error Handling
Comprehensive error handling for:
- Missing parameters or fields.
- Unsupported specification versions.
- Invalid schema values or types.