An asyncio GraphQL client built on top of aiohttp and graphql-core-next
Project description
Asyncio GraphQL Client
An asyncio GraphQL client built on top of aiohttp and graphql-core-next. The client by default introspects schemas and validates all queries prior to dispatching to the server.
Installation
pip install aiographql-client
Example Usage
Here are some example usages of this client implementation. These examples use the Hasura GraphQL Engine.
Simple Query
async def get_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 = await client.post(request)
# display the query used
print(transaction.request.query)
# dump the response data
print(transaction.response.data)
Query Subscription
async def get_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, lambda event: print(event.message)
)
subscription: GraphQLSubscription = await client.subscribe(request, callbacks)
await subscription.task
Query Validation Failures
If your query is invalid, thanks to graphql-core-next, we get a detailed exception in the traceback.
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: }
Sample Requests
Using variables
and operationName
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'
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aiographql-client-1.0.0a0.tar.gz
(12.4 kB
view hashes)
Built Distribution
Close
Hashes for aiographql-client-1.0.0a0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e4f28961ae1334070b78d6fe3376360d08f9aaa4911cb298ef010a96a76a2f7 |
|
MD5 | 235d9929790bffe2f6cf6e1299b83133 |
|
BLAKE2b-256 | 773e029cf3095082f866e07913d67432844466983718771faf8b74c964ac78c5 |
Close
Hashes for aiographql_client-1.0.0a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b9b5e296df0a3c8e84ab41f7bd5943ce2981352bcdd018d4b7ffc9d06f57b9b |
|
MD5 | 0bf435ecbdaa038ddf74b411aa4100bb |
|
BLAKE2b-256 | d6223b23ef533848557146941d35e8cd515220f585c7bc52e82a1d478fe45d9f |