Skip to main content

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


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-0.3.0a0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

aiographql_client-0.3.0a0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

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

Hashes for aiographql-client-0.3.0a0.tar.gz
Algorithm Hash digest
SHA256 e0213117b21c9df49bbd725394483038dfb413d7fb351f608ece3dfb262968cc
MD5 a4338c34759c9df317cf006a4c529b1c
BLAKE2b-256 8ed68b48dd8aba86cf56abf7d11c211dab653c857a95106cd6f4fa3cac019d6c

See more details on using hashes here.

File details

Details for the file aiographql_client-0.3.0a0-py3-none-any.whl.

File metadata

File hashes

Hashes for aiographql_client-0.3.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 2ca9ccb3f308f8d157b6186c03b81540ef02757481430c3e82fede21982f0f2c
MD5 e891f65c14b381eecbccb636b6a78c0a
BLAKE2b-256 09f698a69517e4220ffb12b91cfa8bffb1682360d340c3bcd61da9d0211995fd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page