Jua*_*bos 7 java spring-boot graphql
我有一个使用 graphql 端点运行的 Spring Boot 应用程序,该端点验证并执行查询和突变,但是,我需要读取传入消息中的一个标头,以便将其值传递给另一个端点。graphql 有没有办法读取这些值?某种 getHeaders 或类似的东西?
GraphQL 本身并没有定义任何与如何通过网络公开它相关的东西,因此它没有定义任何与获取 HTTP 标头相关的东西。开发人员使用他们的方式。所以,这取决于你使用的底层技术通过 HTTP 提供 GraphQL。
考虑您使用graphql-spring-boot和graphql-java-tools,并假设您没有自定义GraphQLContext,您可以尝试向DataFetchingEnvironment解析器函数添加参数,然后从中获取GraphQLContext。然后,您可以HttpServletRequest从上下文中获取并访问标头:
public Foo resolveFoo(Map<String,String> input , DataFetchingEnvironment env){
GraphQLContext context = env.getContext();
HttpServletRequest request = context.getHttpServletRequest().get();
request.getHeader("content-type");
}
Run Code Online (Sandbox Code Playgroud)
小智 5
@Ken Chan 的解决方案对我不起作用。GraphQLContext没有名为 的方法getHttpServletRequest。
通过使用来解决它GraphQLServletContext。您可以将代码更改为:
public Foo resolveFoo(Map<String,String> input , DataFetchingEnvironment env){
GraphQLServletContext context = env.getContext();
String header = context.getHttpServletRequest().getHeader("content-type");
}
Run Code Online (Sandbox Code Playgroud)