提问人:CodeBot 提问时间:9/8/2023 最后编辑:CodeBot 更新时间:9/15/2023 访问量:118
使用 java netflix graphql 客户端时如何传递请求头?
How to pass request headers when using java netflix graphql client?
问:
我正在与 HttpClient (JDK 17) 一起使用com.netflix.graphql.dgs:graphql-dgs-client:4.9.16
我正在使用下面创建 graphql 客户端。
GraphQLCLient graphQLClient = GraphQLClient.createCustom(
host-url,
requestExecutor::exec);
我的请求执行器基于 HttpClient。
该方法可以接受标头,但我没有看到可以传递或接受 httpheader 的 graphql 客户端方法。requestExecutor.exec(String url, Map<String, ? extends List<String>> headers, String body)
我目前使用的是 -
var request = new GraphQLQueryRequest(
OurStoreGraphQLQuery.newRequest().oneStoreId(oneStoreId).build(),
RESPONSE_PROJECTION;
GraphQLResponse response = graphQLClient.executeQuery(request.serialize());
以上都不是,即 构造函数或方法具有重载的等效项,该等效项接受 HttpHeader 并将其传递给方法。GraphQLQueryRequest
executeQuery
requestExecutor::exec
- 如果 exec 方法不能由用户代码传递而不创建新的实例,那么接受它的意义何在。
-- 从哪里拾取 headers 参数,如何向上面的 headers 参数添加更多标题??
headers
RequestExecutor
也许我可以使用java-client/#plug-in-your-own-http-client文档中提到的以下样式 -
CustomGraphQLClient client = GraphQLClient.createCustom(url, (url, headers, body) -> {
HttpHeaders httpHeaders = new HttpHeaders();
headers.forEach(httpHeaders::addAll);
ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(body, httpHeaders),String.class);
return new HttpResponse(exchange.getStatusCodeValue(), exchange.getBody());
});
GraphQLResponse graphQLResponse = client.executeQuery(query, emptyMap(), "SubmitReview");
String submittedBy = graphQLResponse.extractValueAsObject("submitReview.submittedBy", String.class);
-- 但看起来每次我的标题更改时,我都必须创建一个自定义客户端实例。是吗?? -- 使用上面建议的方法,看起来我不能在通用方法中使用相同的 requestExecutor,即 requestExecutor::exec。
答: 暂无答案
评论