ariadne是一个用于实现graphql服务器的python库。

ariadne的Python项目详细描述


Ariadne

DocumentationBuild StatusCodecov


阿里阿德涅

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扩展。
  • 选择在camelCasesnake_case之间映射的自动解析器,以及用于将camelCaseKwargs转换为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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Hibernate EntityManager(与Hibernate Core相比)有什么缺点吗?   使用kotlin测试用java编写的安卓应用程序   java在跳转到JavaEE之前,我应该做更多的JavaSE吗?   Java:iText库PDF合并,PDF始终位于页面底部   使用JDBCSpring在多个查询中回滚java   java JPA匹配多个关系中的元素子集   java Datanucleus RDBMS JPA JarWithDependenceCues   java与Http API相比,ThriftFinagle API有多安全?它们的性能如何?   JavaNetty服务器如何从外部调用方法?   如何在访问ApacheTomcat服务器上托管的java web应用程序时获取计算机和用户信息?   java如何存储和重放JDBC语句?   java if语句字符串比较