strawberry-graphql

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 提示的团队

快速上手

  1. 安装带 CLI 的完整包:pip install 'strawberry-graphql[cli]'
  2. 创建 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)
  1. 启动开发服务器:strawberry dev app
  2. 打开 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 扩展包

历史版本

排序