Strawberry 是基于 Python 类型注解的 GraphQL 库,用 dataclasses 风格定义 schema,支持 Django、FastAPI、Starlette 等多种服务端集成。
- 0.338.0
- 发布于
- 2 天前
- 4,724
- 星标
- 27
- 下载
- 同步于
- 2 天前
最新版本
0.338.02026年10月26日 20:30下载慢?可在上方随时切换镜像源
项目说明
项目概述
Strawberry 是一个利用 Python 类型注解构建 GraphQL API 的库,schema 直接由带 @strawberry.type 装饰器的类定义,风格类似 dataclasses。它支持 asyncio 与多种异步框架,内置开发服务器与 GraphiQL 调试界面,并提供 mypy 插件对 GraphQL schema 做静态检查。代码优先的方式让接口定义与业务代码保持同源。
| 项目 | 内容 |
|---|---|
| 语言 | Python |
| 类型 | GraphQL 库(代码优先) |
| 集成 | Django、FastAPI、Starlette、Flask 等 |
| 异步 | asyncio 支持 |
| 许可 | MIT |
类型注解即 schema,静态检查交给 mypy。
主要功能
- 注解定义 schema:用类与类型注解直接声明 GraphQL 类型与字段
- 异步支持:基于 asyncio 的解析器,适配现代异步框架
- 多框架集成:提供 Django、FastAPI、Starlette、Flask、Quart 等视图集成
- 开发服务器:
strawberry dev一条命令启动带 GraphiQL 的调试服务 - mypy 插件:对 schema 做静态类型检查,提前发现类型问题
- 数据加载:配合 dataloader 减少重复查询
- 订阅支持:支持 GraphQL subscriptions 实时推送
适用人群
- Python 后端开发者
- 寻找 Ariadne、graphene 替代方案的用户
- FastAPI 与异步框架用户
- 重视类型检查与 IDE 提示的团队
快速上手
- 安装带 CLI 的完整包:
pip install 'strawberry-graphql[cli]' - 创建
app.py定义 schema
import strawberry
@strawberry.type
class User:
name: str
age: int
@strawberry.type
class Query:
@strawberry.field
def user(self) -> User:
return User(name='Patrick', age=100)
schema = strawberry.Schema(query=Query)- 启动开发服务器:
strawberry dev app - 打开
http://0.0.0.0:8000/graphql在 GraphiQL 中测试
核心优势
- 代码即文档:schema 与业务代码同源,避免两套定义漂移
- 类型检查友好:mypy 插件把 GraphQL 类型纳入静态检查
- 异步优先:原生支持 asyncio,发挥异步框架性能
- 集成广泛:主流 Python Web 框架都有现成集成
系统要求
| 项目 | 要求 |
|---|---|
| 语言 | Python 3 |
| 操作系统 | Linux、macOS、Windows |
| 工具链 | pip 安装,开发协作用 uv |
注意事项
- 版本演进快:功能更新活跃,升级前留意变更日志
- 集成需单独引入:Django 集成需安装
strawberry-graphql-django扩展包
历史版本
排序