Adds GraphQL support to your aiohttp application
Just use the
GraphQLView view from
from aiohttp_graphql import GraphQLView GraphQLView.attach(app, schema=Schema, graphiql=True) # Optional, for adding batch query support (used in Apollo-Client) GraphQLView.attach(app, schema=Schema, batch=True)
This will add a
/graphql endpoint to your app (customizable by passing
GraphQLView.attach is just a convenience function, and the same functionality can be achieved with
gql_view = GraphQLView(schema=Schema, **kwargs) app.router.add_route('*', gql_view, name='graphql')
It's worth noting that the the "view function" of
GraphQLView is contained in
GraphQLView.__call__. So, when you create an instance, that instance is callable with the request object as the sole positional argument. To illustrate:
gql_view = GraphQLView(schema=Schema, **kwargs) gql_view(request) # <-- the instance is callable and expects a `aiohttp.web.Request` object.
GraphQLSchemaobject that you want the view to execute when it gets a valid request.
Executorthat you want to use to execute queries. If an
AsyncioExecutorinstance is provided, performs queries asynchronously within executorâ€™s loop.
root_valueyou want to provide to
context: A value to pass as the
graphql()function. By default is set to
dictwith request object at key
pretty: Whether or not you want the response to be pretty printed JSON.
True, may present GraphiQL when loaded directly from a browser (a useful tool for debugging and exploration).
graphiql_version: The version of the provided
graphiql_template: Inject a Jinja template string to customize GraphiQL.
middleware: Custom middleware for graphql-python.
batch: Set the GraphQL view as batch (for using in Apollo-Client or [ReactRelayNetworkLayer])
jinja_env: Sets jinja environment to be used to process GraphiQL template. If Jinjaâ€™s async mode is enabled (by
Template.render. If environment is not set, fallbacks to simple regex-based renderer.
max_age: sets the response header
Access-Control-Max-Agefor preflight requests
encoder: the encoder to use for responses (sensibly defaults to
error_formatter: the error formatter to use for responses (sensibly defaults to
asyncmode will be enabled.
subscriptions: The GraphiQL socket endpoint for using subscriptions in graphql-ws.
Testing is done with
git clone https://github.com/graphql-python/aiohttp-graphql cd aiohttp-graphql # Create a virtualenv python3.6 -m venv env && source env/bin/activate # for example pip install -e .[test] pytest
The tests, while modeled after sanic-graphql's tests, have been entirely refactored to take advantage of
pytest-asyncio, conform with PEP-8, and increase readability with pytest fixtures. For usage tests, please check them out.
Copyright for portions of project aiohttp-graphql are held by Syrus Akbary as part of project flask-graphql and sanic-graphql as part of project Sergey Porivaev. All other claims to this project aiohttp-graphql are held by Devin Fee.
This project is licensed under the MIT License.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.