Handlers
This package provides shelf
handlers for answering HTTP requests.
graphQLHttp
Handles POST and GET requests for "application/graphql", "application/json", "application/graphql+json" and "multipart/form-data" mime types. The implementations follows the https://github.com/graphql/graphql-over-http/blob/main/spec/GraphQLOverHTTP.md and https://github.com/jaydenseric/graphql-multipart-request-spec specifications.
- POST requests support GraphQL Query and Mutation operations
- We restrict GET requests to allow only GraphQL Query operations
- Support for file Upload with "multipart/form-data" bodies
A 200 status code with a JSON body will be sent by default, with a structure following the spec.
A 400 status code will be sent for requests that do not follow the specifications.
// TODO: A 400 status code will be sent for requests with validation errors.
A 405, method not allowed, status code will be sent for Mutation operations in GET requests
graphQLWebSocket
Handles Query, Mutation and Subscription requests using the "graphql-ws" or "graphql-transport-ws" Web Socket subprotocols. When using this handler, the headers and response utilities will have no effect.
The validateIncomingConnection
parameter allows you to support authentication for your Web Socket connection, it also passes a GraphQLWebSocketServer
as an argument which could be used for closing the connection. Some ping and keep alive Duration
configuration parameters are provided to remove stale connection or identify problems when reaching the client.
// TODO: 2A throwing in the subscribe
field function
Web UI Explorers
These web pages will allow you to explore your GraphQL Schema, view all the types and fields, read each element's documentation, and execute requests against a GraphQL server.
Usually exposed as static HTML in your deployed server. Each has multiple configurations for determining the default tabs, queries and variables, the GraphQL HTTP and WebSocket (subscription) endpoints, the UI's theme and more.
All of the static HTML files and configurations can be found in the graphql_ui folder.
GraphiQL
Documentation. Use graphiqlHandler
. The classic GraphQL explorer
Playground
Documentation. Use playgroundHandler
. Support for multiple tabs, subscriptions.
Altair
Documentation. Use altairHandler
. Support for file Upload, multiple tabs, subscriptions, plugins.