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
Built Distribution
Close
Hashes for aiographql-client-0.3.0a0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0213117b21c9df49bbd725394483038dfb413d7fb351f608ece3dfb262968cc |
|
MD5 | a4338c34759c9df317cf006a4c529b1c |
|
BLAKE2b-256 | 8ed68b48dd8aba86cf56abf7d11c211dab653c857a95106cd6f4fa3cac019d6c |
Close
Hashes for aiographql_client-0.3.0a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ca9ccb3f308f8d157b6186c03b81540ef02757481430c3e82fede21982f0f2c |
|
MD5 | e891f65c14b381eecbccb636b6a78c0a |
|
BLAKE2b-256 | 09f698a69517e4220ffb12b91cfa8bffb1682360d340c3bcd61da9d0211995fd |