跳转到主要内容

Ariadne是一个用于实现GraphQL服务器的Python库。

项目描述

Ariadne

Documentation Codecov


Ariadne

Ariadne是一个用于实现GraphQL服务器的Python库。

  • 模式优先:Ariadne 允许 Python 开发者使用模式优先的方法来实现 API。这是 GraphQL 社区中广泛采用的方法,得到了众多前端和后端开发工具、示例和学习资源的支持。Ariadne 让您和其他团队成员能够立即使用这些功能。
  • 简单:Ariadne 提供了一个小巧、一致且易于记忆的 API,让开发者能够专注于业务问题,而不是样板代码。
  • 开放:Ariadne 被设计成模块化和开放,以便于定制。如果您缺少或对某些内容不满意,可以扩展或轻松替换为您的自定义内容。

文档可在此处找到。

特性

  • 简单、易于学习和记忆的 API。
  • 与 GraphQL.js 版本 15.5.1 兼容。
  • 查询、变异和输入类型。
  • 异步解析器和查询执行。
  • 订阅。
  • 自定义标量、枚举和模式指令。
  • 联合和接口。
  • 文件上传。
  • 使用 SDL 字符串定义模式。
  • .graphql.gql.graphqls 文件中加载模式。
  • 用于在现有网站上实现 GraphQL 的 WSGI 中间件。
  • Apollo Tracing 和 OpenTracing 扩展,用于 API 监控。
  • 可选的自动解析器映射,在 camelCasesnake_case 之间,并提供了一个 @convert_kwargs_to_snake_case 函数装饰器,用于将 camelCase kwargs 转换为 snake_case
  • 内置简单的同步开发服务器,用于快速 GraphQL 实验,并提供 GraphQL Playground。
  • 支持 Apollo GraphQL Visual Studio Code 扩展
  • 通过 gql() 辅助函数进行 GraphQL 语法验证。如果已安装 Apollo GraphQL 扩展,还提供颜色化。
  • 无全局状态或对象注册表,支持在同一个代码库中支持多个 GraphQL API,并具有显式类型重用。
  • 支持 Apollo Federation

安装

Ariadne 可以使用 pip 进行安装

pip install ariadne

Ariadne 需要 Python 3.7 或更高版本。

快速入门

以下示例创建了一个 API,定义了 Person 类型和一个查询字段 people,返回两个人员的列表。它还启动了一个本地开发服务器,并通过 GraphQL Playgroundhttp://127.0.0.1:8000 地址上可用。

首先安装 uvicorn,这是一个 ASGI 服务器,我们将用它来提供 API

pip install uvicorn

然后为您示例应用程序创建一个 example.py 文件

from ariadne import ObjectType, QueryType, gql, make_executable_schema
from ariadne.asgi import GraphQL

# Define types using Schema Definition Language (https://graphql.net.cn/learn/schema/)
# Wrapping string in gql function provides validation and better error traceback
type_defs = gql("""
    type Query {
        people: [Person!]!
    }

    type Person {
        firstName: String
        lastName: String
        age: Int
        fullName: String
    }
""")

# Map resolver functions to Query fields using QueryType
query = QueryType()

# Resolvers are simple python functions
@query.field("people")
def resolve_people(*_):
    return [
        {"firstName": "John", "lastName": "Doe", "age": 21},
        {"firstName": "Bob", "lastName": "Boberson", "age": 24},
    ]


# Map resolver functions to custom type fields using ObjectType
person = ObjectType("Person")

@person.field("fullName")
def resolve_person_fullname(person, *_):
    return "%s %s" % (person["firstName"], person["lastName"])

# Create executable GraphQL schema
schema = make_executable_schema(type_defs, query, person)

# Create an ASGI app using the schema, running in debug mode
app = GraphQL(schema, debug=True)

最后运行服务器

uvicorn example:app

有关更多指南和示例,请参阅文档

贡献

我们欢迎对 Ariadne 的贡献!如果您发现了错误或问题,请随时使用 GitHub 问题。如果您有任何问题或反馈,请随时在 GitHub 讨论中联系我们。

有关指导和说明,请参阅 CONTRIBUTING.md

网站和文档有自己的 GitHub 仓库:mirumee/ariadne-website

同时,请确保您关注 @AriadneGraphQL 在 Twitter 上的最新更新、新闻和随想!

Mirumee Software 用 ❤️ 制作 hello@mirumee.com

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

ariadne-0.23.0.tar.gz (75.1 kB 查看哈希值)

上传时间

构建分发

ariadne-0.23.0-py2.py3-none-any.whl (108.3 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面