spikard-core
Shared transport-agnostic primitives and types for building Spikard runtimes across multiple languages and frameworks.
Features
- Transport-agnostic request/response models
- JSON Schema validation via jsonschema crate
- Gzip and Brotli compression/decompression
- RFC-compliant header and cookie parsing
- Query string parsing and URL handling
- Zero-copy design with minimal allocations
- Strongly-typed request and response structures
Installation
[]
= "0.13.0"
Quick Start
Request/Response Handling
use ;
use HashMap;
// Create a request
let mut request = new;
// Add headers
request.headers_mut.insert;
// Add query parameters
let mut query = new;
query.insert;
request.set_query_params;
// Create a response
let mut response = new;
response.set_body;
Schema Validation
use ValidateBody;
use json;
let schema = json!;
let body = json!;
// Validate body against schema
validate_body?;
Core Types
Request- HTTP request model with headers, cookies, body, and path parametersResponse- HTTP response model with status, headers, and bodyHandlerResult- Standard result type for handlersValidationError- Structured validation errors with field-level detailsRequestContext- Request execution context with metadataRouteConfig- Route configuration with validation schemas
Architecture
spikard-core sits at the foundation of the Spikard architecture:
┌─────────────────────────────────────┐
│ Language Bindings │
│ (Python, Node, Ruby, PHP, Elixir) │
└──────────────┬──────────────────────┘
│ implements
┌──────────────▼──────────────────────┐
│ spikard-http (Axum Runtime) │
└──────────────┬──────────────────────┘
│ uses
┌──────────────▼──────────────────────┐
│ spikard-core (Primitives) │
└─────────────────────────────────────┘
All language bindings depend on spikard-core to ensure consistent request/response handling across platforms.
Related Crates
- spikard - High-level HTTP framework
- spikard-http - HTTP server implementation
Documentation
License
MIT - See LICENSE for details