Crate rustapi_rs

Crate rustapi_rs 

Source
Expand description

§RustAPI

A FastAPI-like web framework for Rust.

RustAPI combines Rust’s performance and safety with FastAPI’s “just write business logic” approach. It provides automatic OpenAPI documentation, declarative validation, and a developer-friendly experience.

§Quick Start

use rustapi_rs::prelude::*;

#[derive(Serialize, Schema)]
struct Hello {
    message: String,
}

async fn hello() -> Json<Hello> {
    Json(Hello {
        message: "Hello, World!".to_string(),
    })
}

#[tokio::main]
async fn main() -> std::result::Result<(), Box<dyn std::error::Error + Send + Sync>> {
    RustApi::new()
        .route("/", get(hello))
        .run("127.0.0.1:8080")
        .await
}

§Features

  • DX-First: Minimal boilerplate, intuitive API
  • Type-Safe: Compile-time route and schema validation
  • Auto Documentation: OpenAPI + Swagger UI out of the box
  • Declarative Validation: Pydantic-style validation on structs
  • Batteries Included: JWT, CORS, rate limiting (optional features)

§Optional Features

Enable these features in your Cargo.toml:

  • jwt - JWT authentication middleware and AuthUser<T> extractor
  • cors - CORS middleware with builder pattern configuration
  • rate-limit - IP-based rate limiting middleware
  • config - Configuration management with .env file support
  • cookies - Cookie parsing extractor
  • sqlx - SQLx database error conversion to ApiError
  • extras - Meta feature enabling jwt, cors, and rate-limit
  • full - All optional features enabled
[dependencies]
rustapi-rs = { version = "0.1", features = ["jwt", "cors"] }

Modules§

auto_route
Auto-route registration using linkme distributed slices
auto_schema
Auto-schema registration using linkme distributed slices
middleware
Middleware infrastructure for RustAPI
multipart
Multipart form data extractor for file uploads
path_validation
Route path validation utilities
prelude
Prelude module - import everything you need with use rustapi_rs::prelude::*
sse
Server-Sent Events (SSE) response types for RustAPI
static_files
Static file serving for RustAPI
stream
Streaming response types for RustAPI

Macros§

route
Helper macro to create a Route from a handler with RouteHandler trait

Structs§

ApiError
Standard API error type
Body
Raw body bytes extractor
BodyLimitLayer
Body size limit middleware layer
ClientIp
Client IP address extractor
Created
201 Created response wrapper
Extension
Extension extractor
HandlerService
Wrapper to convert a Handler into a tower Service
HeaderValue
Single header value extractor
Headers
Headers extractor
Html
HTML response wrapper
Json
JSON body extractor
KeepAlive
Keep-alive configuration for SSE connections
MethodRouter
HTTP method router for a single path
Multipart
Multipart form data extractor
MultipartConfig
Configuration for multipart form handling
MultipartField
A single field from a multipart form
NoContent
204 No Content response
Path
Path parameter extractor
Query
Query string extractor
Redirect
Redirect response
Request
HTTP Request wrapper
RequestId
A unique identifier for a request
RequestIdLayer
Middleware layer that generates a unique request ID for each request
Route
Represents a route definition that can be registered with .mount()
Router
Main router
RustApi
Main application builder for RustAPI
RustApiConfig
Configuration builder for RustAPI with auto-routes
Sse
Server-Sent Events response wrapper
SseEvent
A Server-Sent Event
State
State extractor
StaticFile
Static file response
StaticFileConfig
Static file serving configuration
StreamBody
A streaming body wrapper for HTTP responses
TracingLayer
Middleware layer that creates tracing spans for requests
UploadedFile
File data wrapper for convenient access to uploaded files
ValidatedJson
Validated JSON body extractor
WithStatus
Generic wrapper for returning a response with a custom status code.

Enums§

Environment
Environment configuration for error handling behavior

Constants§

DEFAULT_BODY_LIMIT
Default body size limit: 1MB

Traits§

FromRequest
Trait for extracting data from the full request (including body)
FromRequestParts
Trait for extracting data from request parts (headers, path, query)
Handler
Trait representing an async handler function
IntoResponse
Trait for types that can be converted into an HTTP response
RouteHandler
Trait for handlers with route metadata (generated by #[rustapi::get], etc.)

Functions§

apply_auto_schemas
Apply all auto-registered schemas into the given OpenAPI spec.
collect_auto_routes
Collect all auto-registered routes.
delete
Create a DELETE route handler
delete_route
Create a DELETE route
get
Create a GET route handler
get_environment
Get the current environment (cached)
get_route
Create a GET route
patch
Create a PATCH route handler
patch_route
Create a PATCH route
post
Create a POST route handler
post_route
Create a POST route
put
Create a PUT route handler
put_route
Create a PUT route
serve_dir
Create a static file serving route
sse_response
Create an SSE response from a synchronous iterator of events

Type Aliases§

Response
HTTP Response type
Result
Result type alias for RustAPI operations

Attribute Macros§

delete
DELETE route handler macro
description
Description macro for detailed endpoint description in OpenAPI documentation
get
GET route handler macro
main
Main entry point macro for RustAPI applications
patch
PATCH route handler macro
post
POST route handler macro
put
PUT route handler macro
schema
Auto-register a schema type for zero-config OpenAPI.
summary
Summary macro for endpoint summary in OpenAPI documentation
tag
Tag macro for grouping endpoints in OpenAPI documentation