HTTPXAsyncTransport

This transport uses the httpx library and allows you to send GraphQL queries using the HTTP protocol.

Reference: gql.transport.httpx.HTTPXAsyncTransport

Note

GraphQL subscriptions are not supported on the HTTP transport. For subscriptions you should use the websockets transport.

import asyncio

from gql import Client, gql
from gql.transport.httpx import HTTPXAsyncTransport


async def main():

    transport = HTTPXAsyncTransport(url="https://countries.trevorblades.com/graphql")

    # Using `async with` on the client will start a connection on the transport
    # and provide a `session` variable to execute queries on this connection
    async with Client(
        transport=transport,
        fetch_schema_from_transport=True,
    ) as session:

        # Execute single query
        query = gql(
            """
            query getContinents {
              continents {
                code
                name
              }
            }
        """
        )

        result = await session.execute(query)
        print(result)


asyncio.run(main())

Authentication

There are multiple ways to authenticate depending on the server configuration.

  1. Using HTTP Headers

transport = HTTPXAsyncTransport(
    url='https://SERVER_URL:SERVER_PORT/graphql',
    headers={'Authorization': 'token'}
)
  1. Using HTTP Cookies

You can manually set the cookies which will be sent with each connection:

transport = HTTPXAsyncTransport(url=url, cookies={"cookie1": "val1"})