ariadne是一个用于实现graphql服务器的python库。
ariadne的Python项目详细描述
阿里阿德涅
ariadne是一个用于实现GraphQL服务器的python库。
- schema-first:ariadne使python开发人员能够使用schema-first方法来实现api。这是graphql社区使用的主要方法,并由数十个前端和后端开发工具、示例和学习资源支持。阿里阿德涅会立即将所有这些信息提供给您和您团队的其他成员。
- simple:ariadne提供小型、一致且易于记忆的api,让开发人员专注于业务问题,而不是样板文件。
- open:ariadne被设计成模块化的,可以进行定制。如果你对某件事失去或不满意,扩展或轻松地与你自己的交换。
文档可用here。
功能
- 简单,易学,易记。
- 与graphql.js版本14.4.0兼容。
- 查询、突变和输入类型。
- 异步解析器和查询执行。
- 订阅。
- 自定义标量和枚举。
- 联合和接口。
- 文件上传。
- 使用sdl字符串定义模式。
- 正在从
.graphql
文件加载架构。
在现有站点上实现中间件的中间件。 - Apollo跟踪和用于API监视的OpenTracing扩展。
- 选择在
camelCase
和snake_case
之间映射的自动解析器,以及用于将camelCase
Kwargs转换为snake_case
的@convert_kwargs_to_snake_case
函数装饰器。 - 为快速的graphql实验和graphql操场构建简单的同步开发服务器。
- 支持Apollo GraphQL extension for Visual Studio Code。
- 通过
gql()
helper函数进行graphql语法验证。如果安装了Apollo GraphQL扩展,还提供着色。 - 没有全局状态或对象注册表,支持在同一代码基中使用显式类型重用的多个GraphQLAPI。
安装
ariadne可以与pip一起安装:
pip install ariadne
快速启动
下面的示例创建一个api,定义Person
类型和单个查询字段people
,返回两个人的列表。它还启动一个本地dev服务器,在http://127.0.0.1:8000
地址上有GraphQL Playground可用。
首先安装uvicorn,我们将使用asgi服务器为api提供服务:
pip install uvicorn
然后为示例应用程序创建一个example.py
文件:
fromariadneimportObjectType,QueryType,gql,make_executable_schemafromariadne.asgiimportGraphQL# Define types using Schema Definition Language (https://graphql.org/learn/schema/)# Wrapping string in gql function provides validation and better error tracebacktype_defs=gql(""" type Query { people: [Person!]! } type Person { firstName: String lastName: String age: Int fullName: String }""")# Map resolver functions to Query fields using QueryTypequery=QueryType()# Resolvers are simple python functions@query.field("people")defresolve_people(*_):return[{"firstName":"John","lastName":"Doe","age":21},{"firstName":"Bob","lastName":"Boberson","age":24},]# Map resolver functions to custom type fields using ObjectTypeperson=ObjectType("Person")@person.field("fullName")defresolve_person_fullname(person,*_):return"%s%s"%(person["firstName"],person["lastName"])# Create executable GraphQL schemaschema=make_executable_schema(type_defs,[query,person])# Create an ASGI app using the schema, running in debug modeapp=GraphQL(schema,debug=True)
最后运行服务器:
uvicorn example:app
有关更多指南和示例,请参见documentation。
贡献
我们欢迎对阿里阿德涅的贡献!如果您发现了错误或问题,或者有任何问题或反馈,请随时使用GitHub issues。
有关指导和说明,请参见CONTRIBUTING.md。
由Mirumee Software用制作 hello@mirumee.com