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.4.0a0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92060c9a5f2b96fdd92c707bf42815efa7f8de5d388e9ccb61e660348d8f3809 |
|
MD5 | bc04549edbbd2bea37e0198f7bf79c95 |
|
BLAKE2b-256 | d0a0f3993aa306876de11780a50241275bc6577ab23b5a0cf1bdb11099fcc6bb |
Close
Hashes for aiographql_client-0.4.0a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4819b7caf2e5ea443796d10d680f216f80b075ae66ee8ad6430c29e2a014c31b |
|
MD5 | 49a004c44c57b4f304fb44702ab39e57 |
|
BLAKE2b-256 | 5aee1bcf134766fe5d8e626e72572e99409f0b545cd91f4a3df549047171ec03 |