Request and Response Header Instrumentation¶
The DGS framework internally uses GraphQL Java
and Spring for GraphQL
.
If you need to modify the HTTP request and response headers, you can leverage the WebGraphQlInterceptor
in Spring for GraphQL to accomplish this.
This provides a hook to update the request and response headers based using the GraphQLContext
Example:¶
@Component
public class MyInterceptor implements WebGraphQlInterceptor {
@Override
public Mono<WebGraphQlResponse> intercept(WebGraphQlRequest request, Chain chain) {
String value = request.getHeaders().getFirst("myHeader");
request.configureExecutionInput((executionInput, builder) ->
builder.graphQLContext(Collections.singletonMap("myHeader", value)).build());
return chain.next(request).doOnNext((response) -> {
String value = response.getExecutionInput().getGraphQLContext().get("myContext");
response.getResponseHeaders().add("MyContext", value);
});
}
}