GraphQL-Java将HTTP标头发送到REST端点

时间:2017-09-11 15:26:04

标签: java rest spring-boot dropwizard graphql-java

我需要一种方法从我的grapqh-java impl向我的其他端点发送用于身份验证和授权的http头。我正在GraphQL服务层进行身份验证和授权,但它很成功。现在我需要将相同的标题传递给我的所有其他端点。有没有办法可以做到这一点。 Grapqhl - Spring Boot 休息端点 - Dropwizard

1 个答案:

答案 0 :(得分:1)

在执行查询时,可能只需将所需的特定于用户的数据附加到GraphQL上下文中,例如:

graphQL.execute(queryString, context);

context可以是任何对象,包含令牌,Cookie,会话数据,HttpServletRequest

然后,使用它从DataFetcher s(a.k.a。解析器)发送正确的标题:

public Object get(DataFetchingEnvironment environment) {
    Map<String, Object> context = environment.getContext();
    //get tokens, session data or whatever you need from the context to create the headers
    List headers = ...;
    return callRestWithHeaders("/rest/example", headers);
}

最好通过合成,继承或AOP风格在一个地方执行此标题准备逻辑。