Strawberry GraphQL:基于 dataclass 的 Python GraphQL 库
Strawberry GraphQL:基于 dataclass 的 Python GraphQL 库
Strawberry GraphQL 是一个 Python GraphQL 库,目前获得 4,667 个 Star。


这个库利用 Python 的 dataclass 来定义 GraphQL Schema。开发者通过装饰器声明类型和字段,框架自动将其映射为 GraphQL 类型系统。这种设计与 Python 的类型注解体系结合,让 Schema 的定义过程接近原生 Python 代码的编写习惯。不需要额外学习一套独立的 DSL,类型定义直接复用 Python 已有的语法结构。
安装分为基础版和带 CLI 的版本。基础版仅包含库本身:
pip install strawberry-graphql
如果需要内置的开发服务器和命令行工具,则安装扩展版本:
pip install "strawberry-graphql[cli]"
快速上手的流程简洁。先创建一个 app.py 文件,定义数据类型和查询入口:
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)
这段代码声明了一个 User 类型,包含 name 和 age 两个字段,同时定义了一个 Query 类型,其中 user 字段返回一个写死的用户实例。@strawberry.type 装饰器负责将 dataclass 转换为 GraphQL 对象类型,@strawberry.field 则标记可查询的字段。
接着通过以下命令启动开发服务器:
strawberry dev app
服务运行在 0.0.0.0:8000,打开浏览器访问对应地址即可进入 GraphiQL 交互界面,在图形化环境中测试和调试 API。
Strawberry 内置 mypy 插件,可以对 GraphQL Schema 做静态类型检查。在 mypy.ini 中加入以下配置启用:
[mypy]
plugins = strawberry.ext.mypy_plugin
对于 Django 项目,Strawberry 提供了视图类用于集成 GraphQL 端点。首先将 "strawberry.django" 加入 INSTALLED_APPS,然后在 urls.py 中配置路由:
from strawberry.django.views import GraphQLView
from .schema import schema
urlpatterns = [
path("graphql", GraphQLView.as_view(schema=schema)),
]
项目使用 uv 管理依赖。本地开发时克隆仓库后执行 uv sync 安装依赖,再运行 uv run pytest 执行测试。项目也配置了 pre-commit 钩子,执行 pre-commit install 即可启用代码提交前的自动检查。
Strawberry GraphQL 采用 MIT 协议开源。更多文档可访问项目官网 strawberry.rocks。
浙公网安备 33010602011771号