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§

middleware
Middleware infrastructure for RustAPI
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
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
MethodRouter
HTTP method router for a single path
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
Sse
Server-Sent Events response wrapper
SseEvent
A Server-Sent Event
State
State extractor
StreamBody
A streaming body wrapper for HTTP responses
TracingLayer
Middleware layer that creates tracing spans for requests
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§

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

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
summary
Summary macro for endpoint summary in OpenAPI documentation
tag
Tag macro for grouping endpoints in OpenAPI documentation