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
File details
Details for the file aiographql-client-0.3.0a0.tar.gz
.
File metadata
- Download URL: aiographql-client-0.3.0a0.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.17 CPython/3.7.4 Linux/4.15.0-1035-aws
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0213117b21c9df49bbd725394483038dfb413d7fb351f608ece3dfb262968cc |
|
MD5 | a4338c34759c9df317cf006a4c529b1c |
|
BLAKE2b-256 | 8ed68b48dd8aba86cf56abf7d11c211dab653c857a95106cd6f4fa3cac019d6c |
File details
Details for the file aiographql_client-0.3.0a0-py3-none-any.whl
.
File metadata
- Download URL: aiographql_client-0.3.0a0-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/0.12.17 CPython/3.7.4 Linux/4.15.0-1035-aws
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ca9ccb3f308f8d157b6186c03b81540ef02757481430c3e82fede21982f0f2c |
|
MD5 | e891f65c14b381eecbccb636b6a78c0a |
|
BLAKE2b-256 | 09f698a69517e4220ffb12b91cfa8bffb1682360d340c3bcd61da9d0211995fd |