anchor.diff:  
   Please refer to the {@link io.vertx.ext.web.handler.graphql.GraphiQLHandlerOptions} documentation for further details.
   
  -=== Enable query batching
  -
  -Query batching consists in posting an array instead of a single object to the GraphQL endpoint.
  -
  -Vert.x Web GraphQL can handle such requests but by default the feature is disabled.
  -To enable it, create the {@link io.vertx.ext.web.handler.graphql.GraphQLHandler} with options:
  -
  -[source,$lang]
  -----
  -{@link examples.GraphQLExamples#handlerSetupBatching}
  -----
  -
  -== Building a GraphQL server
  +=== Apollo WebSocketLink
  +
  +You can use an https://www.apollographql.com/docs/link/links/ws/[Apollo WebSocketLink] which connects over a websocket.
  +This is specially useful if you want to add subscriptions to your GraphQL schema, but you can also use the websocket for queries and mutations.
  +
  +[source,$lang]
  +----
  +{@link examples.GraphQLExamples#addApolloWsHandlerToRouter}
  +----
  +
  +IMPORTANT: To support the `graphql-ws` websocket subprotocol, it has to be added to the server configuration:
  +
  +[source,$lang]
  +----
  +{@link examples.GraphQLExamples#configureServerForApolloWs}
  +----
  +
  +NOTE: If you want to support a WebSocketLink and a HttpLink in the same path, you can add the ApolloWSHandler in first place and then the GraphQLHandler.
  +
  +[source,$lang]
  +----
  +{@link examples.GraphQLExamples#configureWebSocketLinkAndHttpLinkSamePath}
  +----
  +
  +Here you can find how to configure the Apollo SubscriptionClient: https://github.com/apollographql/subscriptions-transport-ws
  +
  +IMPORTANT: A subscription `DataFetcher` has to return a `org.reactivestreams.Publisher` instance.
  +
  +== Fetching data
   
   The GraphQL-Java API is very well suited for the asynchronous world: the asynchronous execution strategy is the default for queries (serial asynchronous for mutations).
   
  
positive.code: {@link examples.GraphQLExamples#dataLoaderRegistry}
  ----
  
  === Apollo WebSocketLink
  
  You can use an https://www.apollographql.com/docs/link/links/ws/[Apollo WebSocketLink] which connects over a websocket.
  This is specially useful if you want to add subscriptions to your GraphQL schema, but you can also use the websocket for queries and mutations.
  
  [source,$lang]
  ----
  {@link examples.GraphQLExamples#addApolloWsHandlerToRouter}
  ----
  
  IMPORTANT: To support the `graphql-ws` websocket subprotocol, it has to be added to the server configuration:
  
  [source,$lang]
  ----
  {@link examples.GraphQLExamples#configureServerForApolloWs}
  ----
  
  NOTE: If you want to support a WebSocketLink and a HttpLink in the same path, you can add the ApolloWSHandler in first place and then the GraphQLHandler.
  
  [source,$lang]
  ----
  {@link examples.GraphQLExamples#configureWebSocketLinkAndHttpLinkSamePath}
  ----
  
  Here you can find how to configure the Apollo SubscriptionClient: https://github.com/apollographql/subscriptions-transport-ws
  
  IMPORTANT: A subscription `DataFetcher` has to return a `org.reactivestreams.Publisher` instance.
  
  === GraphQL multipart request
  
  https://github.com/jaydenseric/graphql-multipart-request-spec[GraphQL multipart request] is an interoperable multipart form field structure for `GraphQL` requests.
  By enabling this functionality, GraphQL clients will be able to upload files using a single mutation call.
  
negative.code: {@link examples.GraphQLExamples#completionStageDataFetcher}
  ----
  
  === Working with callback-based APIs
  
  Implementing a data fetcher that returns a `CompletionStage` is not a complex task.
  But when you work with Vert.x callback-based APIs, it requires a bit of boilerplate.
  