spikard-core 0.13.0

Shared transport-agnostic primitives for Spikard runtimes
Documentation

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

[dependencies]
spikard-core = "0.13.0"

Quick Start

Request/Response Handling

use spikard_core::{Request, Response};
use std::collections::HashMap;

// Create a request
let mut request = Request::new(
    "GET".to_string(),
    "/api/users".to_string(),
);

// Add headers
request.headers_mut().insert(
    "Authorization".to_string(),
    "Bearer token123".to_string(),
);

// Add query parameters
let mut query = HashMap::new();
query.insert("filter".to_string(), "active".to_string());
request.set_query_params(query);

// Create a response
let mut response = Response::new(200);
response.set_body(r#"{"users": []}"#.as_bytes().to_vec());

Schema Validation

use spikard_core::validation::ValidateBody;
use serde_json::json;

let schema = json!({
    "type": "object",
    "properties": {
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
    },
    "required": ["name", "email"]
});

let body = json!({
    "name": "Alice",
    "email": "alice@example.com"
});

// Validate body against schema
validate_body(&body, &schema)?;

Core Types

  • Request - HTTP request model with headers, cookies, body, and path parameters
  • Response - HTTP response model with status, headers, and body
  • HandlerResult - Standard result type for handlers
  • ValidationError - Structured validation errors with field-level details
  • RequestContext - Request execution context with metadata
  • RouteConfig - 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

Documentation

License

MIT - See LICENSE for details