Skip to main content
Version: 0.19

ASGI reference

The ariadne.asgi package exports the GraphQL ASGI application:

GraphQL

class GraphQL:
...

ASGI application implementing the GraphQL server.

Can be used stand-alone or mounted within other ASGI application, for example in Starlette or FastAPI.

Constructor

def __init__(
self,
schema: GraphQLSchema,
*,
context_value: Optional[ContextValue],
root_value: Optional[RootValue],
query_parser: Optional[QueryParser],
validation_rules: Optional[ValidationRules],
debug: bool,
introspection: bool,
explorer: Optional[Explorer],
logger: Union[None, str, Logger, LoggerAdapter],
error_formatter: ErrorFormatter,
execution_context_class: Optional[Type[ExecutionContext]],
http_handler: Optional[GraphQLHTTPHandler],
websocket_handler: Optional[GraphQLWebsocketHandler],
):
...

Initializes the ASGI app and it's http and websocket handlers.

Required arguments

schema: an instance of GraphQL schema to execute queries against.

Optional arguments

context_value: a ContextValue to use by this server for context. Defaults to {"request": request} dictionary where request is an instance of starlette.requests.Request.

root_value: a RootValue to use by this server for root value. Defaults to None.

query_parser: a QueryParser to use by this server. Defaults to graphql.parse.

validation_rules: a ValidationRules list or callable returning a list of extra validation rules server should use to validate the GraphQL queries. Defaults to None.

debug: a bool controlling in server should run in debug mode or not. Controls details included in error data returned to clients. Defaults to False.

introspection: a bool controlling if server should allow the GraphQL introspection queries. If False, introspection queries will fail to pass the validation. Defaults to True.

explorer: an instance of Explorer subclass to use when the server receives an HTTP GET request. If not set, default GraphQL explorer for your version of Ariadne is used.

logger: a str with name of logger or logger instance server instance should use for logging errors. If not set, a logger named ariadne is used.

error_formatter: an ErrorFormatter this server should use to format GraphQL errors returned to clients. If not set, default formatter implemented by Ariadne is used.

execution_context_class: custom ExecutionContext type to use by this server to execute the GraphQL queries. Defaults to standard context type implemented by the graphql.

http_handler: an instance of [GraphQLHTTPHandler](asgi-handlers-reference.md#graphqlhttphandler) class implementing the HTTP requests handling logic for this server. If not set, an instance of [GraphQLHTTPHandler](asgi-handlers-reference.md#graphqlhttphandler) is used.

websocket_handler: an instance of [GraphQLWebsocketHandler](asgi-handlers-reference.md#graphqlwebsockethandler) class implementing the websocket connections handling logic for this server. If not set, GraphQLWSHandler will be used, implementing older version of GraphQL subscriptions protocol.

Methods

__call__

async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
...

An entrypoint to the ASGI application.

Supports both HTTP and WebSocket connections.

Required arguments

scope: The connection scope information, a dictionary that contains at least a type key specifying the protocol that is incoming.

receive: an awaitable callable that will yield a new event dictionary when one is available.

send: an awaitable callable taking a single event dictionary as a positional argument that will return once the send has been completed or the connection has been closed.

Details about the arguments and their usage are described in the ASGI specification:

https://asgi.readthedocs.io/en/latest/specs/main.html

handle_request

async def handle_request(self, request: Request) -> Response:
...

Shortcut for graphql_app.http_handler.handle_request(...).

handle_websocket

async def handle_websocket(self, websocket: Any) -> Awaitable[Any]:
...

Shortcut for graphql_app.websocket_handler.handle_websocket(...).


ariadne.asgi package also reexports following names:

  • Extensions
  • MiddlewareList
  • Middlewares
  • OnComplete
  • OnConnect
  • OnDisconnect
  • OnOperation
  • Operation
  • WebSocketConnectionError