async def METHOD_NAME(
    self,
    request: Request,
    context: Optional[Context] = UNSET,
    root_value: Optional[RootValue] = UNSET,
) -> Response:
    request_adapter = self.request_adapter_class(request)
    if not self.is_request_allowed(request_adapter):
        raise HTTPException(405, "GraphQL only supports GET and POST requests.")
    if self.should_render_graphiql(request_adapter):
        if self.graphiql:
            return self.render_graphiql(request)
        else:
            raise HTTPException(404, "Not Found")
    sub_response = await self.get_sub_response(request)
    context = (
        await self.get_context(request, response=sub_response)
        if context is UNSET
        else context
    )
    root_value = (
        await self.get_root_value(request) if root_value is UNSET else root_value
    )
    assert context
    try:
        result = await self.execute_operation(
            request=request, context=context, root_value=root_value
        )
    except InvalidOperationTypeError as e:
        raise HTTPException(
            400, e.as_http_error_reason(request_adapter.method)
        ) from e
    except MissingQueryError as e:
        raise HTTPException(400, "No GraphQL query found in the request") from e
    response_data = await self.process_result(request=request, result=result)
    return self.create_response(
        response_data=response_data, sub_response=sub_response
    )