在aiohttp和graphql核心之上构建的asyncio graphql客户机next

aiographql-client的Python项目详细描述


Asyncio GraphQL客户端

接下来是在aiohttp和graphql核心之上构建的asyncio graphql客户机。默认情况下,客户机会在发送到服务器之前对模式进行内省并验证所有查询。

安装

pip install aiographql-client

示例用法

下面是这个客户机实现的一些示例用法。这些示例使用Hasura GraphQL Engine

简单查询

asyncdefget_bots():client=GraphQLClient(endpoint="http://localhost:8080/v1alpha1/graphql",headers={"x-hasura-admin-secret":"myadminsecretkey"},)request=GraphQLRequest(query="""        query get_bots {          chatbot {            id, bot_name          }        }        """)transaction=awaitclient.post(request)# display the query usedprint(transaction.request.query)# dump the response dataprint(transaction.response.data)

查询订阅

asyncdefget_bots():client=GraphQLClient(endpoint="http://localhost:8080/v1alpha1/graphql",headers={"x-hasura-admin-secret":"myadminsecretkey"},)request=GraphQLRequest(query="""        subscription get_bot_updates {          chatbot {            id, bot_name          }        }        """)# configure callbacks, here we simply print the event message when a data event# (`GraphQLSubscriptionEvent`) is received.callbacks=CallbackRegistry()callbacks.register(GraphQLSubscriptionEventType.DATA,lambdaevent:print(event.message))subscription:GraphQLSubscription=awaitclient.subscribe(request,callbacks)awaitsubscription.task

查询验证失败

如果您的查询无效,感谢graphql core next,我们将在回溯中得到一个详细的异常。

aiographql.client.exceptions.GraphQLClientValidationException: Query validation failed

Cannot query field 'ids' on type 'chatbot'. Did you mean 'id'?

GraphQL request (4:13)
3:           chatbot {
4:             ids, bot_names
               ^
5:           }

Cannot query field 'bot_names' on type 'chatbot'. Did you mean 'bot_name' or 'bot_language'?

GraphQL request (4:18)
3:           chatbot {
4:             ids, bot_names
                    ^
5:           }

示例请求

使用variablesoperationName

GraphQLRequest(query="""    query get_bot_created($id: Int) {      chatbot(where: {id: {_eq: $id}}) {        id, created      }    }    query get_bot_name($id: Int) {      chatbot(where: {id: {_eq: $id}}) {        id, bot_name      }    }    """,variables={'id':'109'},operationName='get_bot_name')

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

推荐PyPI第三方库


热门话题
java Android使用两个后台服务错误   解压缩HTTPInputStream时,java GZIPInputStream过早关闭   javax和javax的区别是什么。网ssl。密钥库和服务器。ssl。为SpringBoot应用程序指定密钥库时的密钥库属性   java生成两个JPanel,而我只需要一个   java深度链接从play store安装应用程序时获取数据   java 安卓应用程序在退出时未正确释放蓝牙   java正确使用setCellValueFactory   java开放JdbcTemplate连接处于只读模式?   使用Spring MVC创建服务时发生java错误   JavaFX获取安装在计算机中的特定应用程序的版本   SecureRandom的安全问题:PRNG在java 1.5中不一致   windows我可以创建一个独立的。带Inno设置的Java应用程序的exe安装程序?   如何使用JavaServlet下载csv文件?   java从生成的缓冲图像中添加图像作为jasper中的数据记录?   java日期和时间解析