aiohttp based GraphQL client with file upload support
Project description
Asynchronous/IO GraphQL client
A Python asynchronous/IO GraphQL client based on aiohttp.
In addition to standard HTTP POST queries
and mutations
this client fully supports
the GraphQL multipart form requests spec for file uploads
and the graphql-ws subprotocol for WebSocket based subscriptions
.
Installation
pip install aiogqlc
Basic usage
Check the documentation for detailed and more advanced usage examples.
Queries
import asyncio import aiohttp from aiogqlc import GraphQLClient ENDPOINT = "https://swapi-graphql.netlify.app/.netlify/functions/index" document = """ query { allFilms { films { title } } } """ async def main(): async with aiohttp.ClientSession() as session: client = GraphQLClient(document, session=session) response = await client.execute(document) print(await response.json()) if __name__ == "__main__": asyncio.run(main())
Mutations
import aiohttp from aiogqlc import GraphQLClient document = """ mutation ($userId: ID!) { deleteUser (id: $userId) { id } } """ variables = { "userId": "42", } async def main(): async with aiohttp.ClientSession() as session: client = GraphQLClient("https://example.com/graphql/", session=session) response = await client.execute(document, variables=variables) print(await response.json())
File uploads
import aiohttp from aiogqlc import GraphQLClient document = """ mutation($file: Upload!) { uploadFile(file: $file) { size } } """ variables = { "file": open("test.txt", "rb") } async def foo(): async with aiohttp.ClientSession() as session: client = GraphQLClient("https://example.com/graphql/", session=session) response = await client.execute(document, variables=variables) print(await response.json())
Subscriptions
import aiohttp from aiogqlc import GraphQLClient document = """ subscription($postId: ID!) { likeAdded(postId: $postId) } """ variables = { "postId": "42" } async def main(): async with aiohttp.ClientSession() as session: client = GraphQLClient("https://example.com/graphql/", session=session) async with client.connect() as connection: async for payload in connection.subscribe(document, variables=variables): print(payload)
Documentation
Read the documentation to learn more about queries, mutations, subscriptions, file uploads and even authentication.
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
aiogqlc-3.1.0.tar.gz
(5.8 kB
view hashes)