RustAPI框架

RustAPI是一个具有FastAPI类似开发体验的Rust Web框架,提供高性能、零样板代码和AI优先架构。

  • by Tuntii
  • Rust
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Tuntii/RustAPI-examples

使用说明

RustAPI示例

生产就绪示例 展示了 RustAPI --具有类似FastAPI开发经验的Rust web框架。

📚 官方资源:


🚀 为什么选择RustAPI?

“Rust速度。Python简单。AI效率。”

度量 RustAPI Actix Axum FastAPI(Python)
演出 约92k需求/秒 约105k 约100k 约12k
开发者体验 🟢 高 🔴 低 🟡 中等 🟢 高
样板文件 零 高 中 零
AI/LLM原生 ✅ ❌ ❌ ❌
类型安全 ✅ ✅ ✅ ❌

主要特点

  • 🎯 零沸点板 — RustApi::auto() 自动发现所有路线
  • 📝 汽车文档 --OpenAPI/Swagger /docs 开箱即用
  • ✅ 内置验证 — #[validate] 带有详细的错误信息
  • 🔐 JWT身份验证 --头等舱 JwtLayer 和 AuthUser<T> 提取器
  • 🤖 AI优先架构 --TOON格式(节省50-58%的代币),支持MCP
  • ⚡ 中间件堆栈 --速率限制、CORS、日志记录、断路器等
  • 🌐 实时 --支持广播通道的WebSocket

📋 先决条件

在运行这些示例之前,请确保您已经:

# Rust 1.70 or later
rustc --version

# Clone the examples repository
git clone https://github.com/Tuntii/rustapi-rs-examples.git
cd rustapi-rs-examples

# Build all examples
cargo build --release

可选依赖关系 (具体示例):

  • 码头工人 --For sqlx-crud (PostgreSQL/SQLite)
  • SQLite --For sqlx-crud 本地测试

📂 示例概述

此存储库包含 18个生产就绪示例 按类别组织:

🌟 入门指南

示例 难度 描述 主要特征
你好,世界 ⭐ 最少20行API RustApi::auto()、路径参数, Json 回应
积垢api ⭐⭐ 完成CRUD操作 验证、分页、错误处理、正文限制
概念验证 ⭐⭐⭐ 全功能书签管理器 JWT、CRUD、SSE、模块化处理程序、Swagger UI

🔐 身份验证和安全

示例 难度 描述 主要特征
身份验证api ⭐⭐⭐ JWT认证系统 登录/注册, JwtLayer, AuthUser<T>,受保护的路线
利率限制演示 ⭐⭐ 基于IP的速率限制 每端点限制,突发支持,429处理
中间件链 ⭐⭐⭐ 自定义中间件组合 请求ID、定时、身份验证、中间件排序
cors试验 ⭐⭐ CORS配置 CorsLayer,允许的起源/方法/标头

🗄️ 数据库集成

示例 难度 描述 主要特征
sqlx积垢 ⭐⭐⭐ SQLx+SQLite/PostgreSQL 连接池、事务、迁移
事件来源 ⭐⭐⭐⭐ 事件源模式 CQRS、领域事件、聚合重建

🤖 AI和LLM集成

示例 难度 描述 主要特征
toon-api ⭐⭐ 令牌优化响应 ToonResponse、内容协商、令牌头
mcp服务器 ⭐⭐⭐ 模型上下文协议(MCP工具) 进程内调用(InvocationMode::InProcess)、代理工具、Claude/Cursor集成、全流程尊重

🌐 实时和网络

示例 难度 描述 主要特征
双向通信 ⭐⭐⭐ WebSocket聊天服务器 广播频道、发布/订阅、连接管理
模板 ⭐⭐ 服务器端渲染 Tera模板、继承、静态文件

🏗️ 高级体系结构

示例 难度 描述 主要特征
graphqlapi ⭐⭐⭐⭐ GraphQL集成 异步GraphQL,查询/突变,游乐场
微服务 ⭐⭐⭐⭐ API网关模式 服务到服务通信、路由
微服务高级 ⭐⭐⭐⭐ 服务发现 注册表、心跳、Docker Compose
第11阶段演示 ⭐⭐⭐⭐ 高级中间件 防护、断路器、超时、日志记录
无服务器lambda ⭐⭐⭐ AWS Lambda部署 SAM模板,冷启动优化

⚠️ 备注: serverless-lambda 使用AWS Lambda HTTP运行时而不是RustAPI进行无服务器部署模式。


🎯 功能覆盖矩阵

功能 使用示例
RustApi::auto() 所有示例
Json<T> / JsonResponse crud-api、auth-api、概念证明、graphql-api
#[validate] crud-api、auth-api、概念验证
JwtLayer / AuthUser<T> auth-api、中间件链、phase11演示、概念验证
RateLimitLayer 速率限制演示、auth-api、cors测试、概念验证
CorsLayer cors测试、中间件链、概念验证
ToonResponse toon api、mcp服务器
MCP (协议mcp) mcp服务器
WebSocket / WsConnection websocket
View<T> / ViewEngine 模板
State<T> 所有具有共享状态的示例
RequestIdLayer 中间件链,第11阶段演示
CircuitBreakerLayer 第11阶段演示
TimeoutLayer 第11阶段演示

📊 RustAPI功能标志

每个示例都使用特定的Cargo特征标志。看 功能.md 详细文档。

功能标志 目的 示例
full 所有功能已启用 crud api,第11阶段演示
jwt JWT身份验证 auth-api、中间件链、概念验证
cors CORS中间件 CORS测试、中间件链、概念验证
rate-limit 速率限制 速率限制演示、auth-api、cors测试、概念验证
toon LLM的TOON格式 TOON api,mcp服务器
protocol-mcp MCP/AI代理工具 MCP服务器
ws WebSocket支持 WebSocket
view 模板渲染 模板
swagger-ui Swagger UI位于/docs toon api

🚀 快速开始

运行示例

# Navigate to repository
cd rustapi-rs-examples

# Run any example
cargo run -p hello-world

# Run the MCP + HTTP demo (AI agent tools)
cargo run -p mcp-server

# Run with debug logging
RUST_LOG=debug cargo run -p crud-api

# Access Swagger documentation (when running)
# http://127.0.0.1:8080/docs

测试API端点

# Hello World
curl http://127.0.0.1:8080/
curl http://127.0.0.1:8080/hello/RustAPI

# CRUD API
curl http://127.0.0.1:8080/users
curl -X POST http://127.0.0.1:8080/users \
  -H "Content-Type: application/json" \
  -d '{"name": "Alice", "email": "alice@example.com"}'

# Auth API
curl -X POST http://127.0.0.1:8080/login \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "password"}'

📚 学习路径

要获得结构化的学习体验,请按照我们推荐的进度进行 学习路径.md:

1. hello-world     → Basic routing, responses
2. crud-api        → Validation, error handling, state management
3. auth-api        → JWT authentication, protected routes
4. middleware-chain → Custom middleware, composition
5. proof-of-concept → Full application architecture

🔗 食谱交叉引用

每个示例都映射到 RustAPI食谱:

示例 食谱部分
你好,世界 入门指南→ 快速入门
积垢api 食谱→ CRUD资源
身份验证api 食谱→ JWT身份验证
中间件链 食谱→ 自定义中间件
sqlx积垢 食谱→ 数据库集成
websocket 食谱→ WebSockets
模板 板条箱→ rustapi视图
toon-api 板条箱→ 鲁斯塔皮卡通

📝 创造自己的榜样

  1. 创建目录: my-example/

  2. 添加Cargo.toml:

    [package]
    name = "my-example"
    version = "0.1.0"
    edition = "2021"
    
    [dependencies]
    rustapi-rs = { path = "../../crates/rustapi-rs", features = ["full"] }
    tokio = { version = "1", features = ["full"] }
    serde = { version = "1", features = ["derive"] }
    
  3. 创建src/main.rs:

    use rustapi_rs::prelude::*;
    
    #[rustapi_rs::get("/")]
    async fn index() -> &'static str {
        "Hello from my example!"
    }
    
    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
        RustApi::auto().run("127.0.0.1:8080").await
    }
    
  4. 运行它:

    cargo run -p my-example
    

🎯 路线图

即将推出

  • [ ] redis缓存 --Redis缓存层
  • [ ] sse活动 --服务器发送事件流
  • [ ] grpc集成 -gRPC+REST混合API
  • [ ] 分布式追踪 --OpenTetry集成
  • [ ] kubernetes就绪 --健康检查、指标、优雅关机

🤝 贡献

欢迎投稿!查看我们的 贡献指南 了解详情。

  1. 分叉此存储库
  2. 在新目录中创建示例
  3. 添加全面的文档(README.md)
  4. 提交拉取请求

📄 许可证

该项目的许可证为MIT OR Apache-2.0许可证,与 RustAPI.


内置于❤️ 使用 RustAPI

框架 · 食谱 · 例子 · 讨论