Ariadne 是一个用于实现 GraphQL 服务器的 Python 库。
模式优先: Ariadne 使 Python 开发人员能够使用模式优先方法来实现 API。这是 GraphQL 社区使用的领先方法,并得到数十种前端和后端开发人员工具、示例和学习资源的支持。 Ariadne 使您和您团队的其他成员可以立即使用所有这些内容。
简单: Ariadne 提供小型、一致且易于记忆的 API,让开发人员专注于业务问题,而不是样板文件。
开放: Ariadne 被设计为模块化且开放定制。如果您缺少某些内容或对某些内容不满意,请扩展或轻松替换您自己的内容。
文档可在此处获取。
简单、快速学习且易于记忆的 API。
与 GraphQL.js 版本 15.5.1 的兼容性。
查询、突变和输入类型。
异步解析器和查询执行。
订阅。
自定义标量、枚举和模式指令。
联合和接口。
文件上传。
使用 SDL 字符串定义架构。
从.graphql
、 .gql
和.graphqls
文件加载架构。
用于在现有站点中实现 GraphQL 的 WSGI 中间件。
用于 API 监控的 Apollo Tracing 和 OpenTracing 扩展。
选择加入camelCase
和snake_case
之间的自动解析器映射,以及用于将camelCase
kwargs转换为snake_case
@convert_kwargs_to_snake_case
函数装饰器。
内置简单的同步开发服务器,用于快速 GraphQL 实验和 GraphQL Playground。
支持 Visual Studio Code 的 Apollo GraphQL 扩展。
通过gql()
辅助函数进行 GraphQL 语法验证。如果安装了 Apollo GraphQL 扩展,还提供着色。
没有全局状态或对象注册表,支持同一代码库中的多个 GraphQL API 并具有显式类型重用。
支持Apollo Federation
。
Ariadne 可以使用 pip 安装:
pip 安装 ariadne
Ariadne 需要 Python 3.7 或更高版本。
以下示例创建一个定义Person
类型和单个查询字段people
API,返回两个人的列表。它还启动一个本地开发服务器,并在http://127.0.0.1:8000
地址上提供 GraphQL Playground。
首先安装 uvicorn,我们将使用它来提供 API 的 ASGI 服务器:
pip 安装 uvicorn
然后为您的示例应用程序创建一个example.py
文件:
from ariadne import ObjectType, QueryType, gql, make_executable_schemafrom ariadne.asgi import GraphQL# 使用模式定义语言定义类型 (https://graphql.org/learn/schema/)# 在 gql 函数中包装字符串可提供验证和更好的错误tracebacktype_defs = gql (""" type Query { people: [Person!]! } type Person { 名字:字符串 姓氏:字符串age: Int fullName: String }""")# 使用 QueryType 将解析器函数映射到查询字段 query = QueryType()# 解析器是简单的 python 函数@query.field("people")defsolve_people(*_):return [ {“firstName”:“约翰”,“lastName”:“Doe”,“年龄”:21}, {"firstName": "鲍勃", "lastName": "鲍勃森", "年龄": 24}, ]# 使用 ObjectTypeperson = ObjectType("Person")@person.field("fullName") 将解析器函数映射到自定义类型字段 def resolve_person_fullname(person, *_):return "%s %s" % (person["firstName" ], person["lastName"])# 创建可执行的 GraphQL schemaschema = make_executable_schema(type_defs, query, person)# 使用 schema 创建一个 ASGI 应用程序,运行在调试模式下app = GraphQL(schema, debug=True)
最后运行服务器:
uvicorn 示例:应用程序
有关更多指南和示例,请参阅文档。
我们欢迎为 Ariadne 做出贡献!如果您发现错误或问题,请随时使用 GitHub issues。如果您有任何问题或反馈,请随时关注我们的 GitHub 讨论。
有关指导和说明,请参阅 CONTRIBUTING.md。
网站和文档有自己的 GitHub 存储库:mirumee/ariadne-website
另请确保您在 Twitter 上关注@AriadneGraphQL,以获取最新更新、新闻和随机思考!
由 Mirumee Software 使用 ❤️ 制作[email protected]