特点
特点¶
Sanic RESTful Framework(SRF) 提供了一套完整的工具和功能,帮助您快速构建高质量的 RESTful API。
核心特性¶
🎯 基于类的视图集(ViewSet)¶
ViewSet 是 SRF 的核心概念,它提供了一种优雅的方式来组织和管理 API 端点。
特点:
- 自动生成标准的 RESTful 路由
- 内置 CRUD 基本视图函数(Create, Read, Update, Delete, List)
- 支持 Mixin 模式,灵活组合功能
- 通过
@action装饰器轻松添加自定义路由视图函数 - 快速开发,接近 Django REST Framework的开发体验
优势:
- 减少重复代码,提高开发效率
- 统一的代码风格和结构
- 易于测试和维护
🎨 自动路由生成¶
SanicRouter 自动为 ViewSet 生成路由:
标准路由:
GET /api/resource→ listPOST /api/resource→ createGET /api/resource/<pk>→ retrievePUT/PATCH /api/resource/<pk>→ updateDELETE /api/resource/<pk>→ destroy
自定义路由:
- 通过
@action装饰器定义 - 自动发现并注册
- 支持集合级和详情级操作
🔐 完整的认证系统¶
SRF 提供了多种认证方式,满足不同场景的需求。
支持的认证方式:
- JWT 认证:基于 JSON Web Token 的无状态认证
- 社交登录:支持 GitHub OAuth(可扩展其他平台)
- 邮箱验证:内置邮箱验证码功能
认证特性:
- 自动处理 token 验证
- 用户角色和权限管理
- 密码加密存储(bcrypt)
- 公开端点配置
🛡️ 灵活的权限系统¶
基于类的权限系统,支持视图级和对象级权限控制。
内置权限类:
IsAuthenticated:用户必须已登录IsRoleAdminUser:用户必须是管理员角色IsSafeMethodOnly:仅允许安全的 HTTP 方法(GET, HEAD, OPTIONS)- 基于
BasePermission实现自定义的权限管控
📊 强大的数据处理¶
数据验证与序列化¶
- 基于 Pydantic 的数据验证
- 自动数据序列化和反序列化
- 支持读写 Schema 分离
- 类型安全,IDE 友好
过滤系统¶
SRF 提供了多种过滤器,可以组合使用:
- SearchFilter:全文搜索过滤
- JsonLogicFilter:支持复杂的 JSON Logic 表达式
- QueryParamFilter:基于查询参数的精确过滤
- OrderingFactory:排序功能
分页¶
- 基于页码的分页
- 可配置每页数量
- 返回统一的分页响应格式
🚦 限流中间件¶
保护您的 API 免受滥用,支持多种限流策略:
- IPRateLimit:基于 IP 地址限流
- UserRateLimit:基于用户 ID 限流
- PathRateLimit:基于请求路径限流
- HeaderRateLimit:基于请求头限流
存储方式:
- 内存存储(MemoryStorage)
- 可扩展支持 Redis 等外部存储
🏥 健康检查¶
内置健康检查功能,监控应用和依赖服务的状态。
支持的服务检查:
- Redis
- PostgreSQL
- MongoDB
- SQLite
特点:
- 自动检测服务可用性
- 返回标准化的健康状态响应
- 易于集成到监控系统
🔧 实用工具¶
HTTP 状态码¶
- 完整的 HTTP 状态码枚举
- 语义化的常量命名(如
HTTP_200_OK,HTTP_404_NOT_FOUND) - 状态码类型检查函数
异常处理¶
- 统一的异常处理机制
- 自定义异常类
- 自动转换为标准的 HTTP 响应
邮件发送¶
- 基于 aiosmtplib 的异步邮件发送
- 支持 HTML 和纯文本邮件
- 配置灵活,易于使用
设计理念¶
约定优于配置¶
SRF 遵循"约定优于配置"的原则,提供合理的默认配置,让您可以快速开始开发。同时保持高度的可配置性,在需要时可以自定义任何行为。
模块化与可扩展¶
SRF 采用模块化设计,每个功能都是独立的模块,可以根据需要选择使用。同时提供了清晰的扩展点,方便您添加自定义功能。
类型安全¶
通过 Pydantic 和类型注解,SRF 提供了良好的类型安全性,减少运行时错误,提高代码质量。
异步优先¶
充分利用 Python 的 asyncio 特性和 Sanic 的异步架构,提供高性能的 API 服务。
性能优势¶
- 异步 I/O:原生支持 async/await,基于 uvloop 实现快速事件循环,性能远超同步框架
- 高效路由:自动生成和注册路由,减少运行时开销
- 灵活缓存:支持配置缓存策略,提升响应速度
- 轻量级:核心功能精简,按需加载模块
开发体验¶
生态完善¶
- 基于Sanic为基础框架,可以和生态中各种框架完美融合
IDE 友好¶
- 完整的类型注解
- 清晰的代码结构
- 良好的代码提示和自动补全
易于测试¶
- 基于类的设计便于单元测试
- 清晰的接口和职责分离
- 支持 Mock 和依赖注入
文档完善¶
- 详细的多语言文档
- 丰富的代码示例
- API 参考文档
适用场景¶
SRF 适合以下场景:
- ✅ 构建 RESTful API 服务
- ✅ 需要高并发处理的应用
- ✅ 微服务架构
- ✅ 前后端分离项目
- ✅ 移动应用后端
- ✅ 物联网平台
- ✅ 数据 API 服务
对比其他框架¶
| 特性 | SRF | FastAPI | Django REST |
|---|---|---|---|
| 异步支持 | ✅ 完整 | ✅ 完整 | ⚠️ 部分 |
| 性能 | 🚀很高 | 🚀 较高 | ⚡ 中等 |
| 开发速度 | 很快 | 快 | 很快 |
| 学习曲线 | 📈 平缓 | 📈 平缓 | 📈 陡峭 |
| ViewSet | ✅ 支持 | ❌ 不支持 | ✅ 支持 |
| 数据验证 | Pydantic | Pydantic | Serializer |
| ORM | Tortoise(其他ORM扩展中) | SQLAlchemy/其他 | Django ORM |
| 社区 | 🌱 成长中 | 🌳 活跃 | 🌲 成熟 |
下一步¶
现在您已经了解了 SRF 的主要特性,可以: