在我的项目中,我需要从多个graphql端点获取数据。我在www.example.com文件中定义了一个端点application.properties,如下所示:graphql.client.url=https://api.foo.com/graphql-1
并在代码中提取数据:
public Foo getFooByid(String id) throws Exception {
final GraphQLRequest request =
GraphQLRequest.builder()
.query(orgByIdQuery)
.variables(Map.of("id", id))
.build();
final GraphQLResponse response = graphQLWebClient.post(request).block();
response.validateNoErrors();
return response.get("Foo", Foo.class);
}
因此,从www.example.com文件中获取客户端url是一个很好的方法application.properties。现在,如何定义第二个客户端url https://api.foo.com/graphql-2
并在代码中使用它呢?gql的依赖关系:
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-webclient-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
2条答案
按热度按时间xuo3flqw1#
一旦定义了所有需要的URL(将@Value绑定到属性文件),就应该创建一个HttpGraphQlClientBean,然后可以针对每个请求对其进行修改:
在你的另一个组件里,你提出了你的第一个请求...
然后,您可以根据需要对其进行多次修改
希望能有所帮助!
1cklez4t2#
Lib似乎允许通过属性为1个客户端进行配置。其他客户端似乎必须通过编程方式创建。
然后放入spring上下文中或在类内部使用。请参见
WebClientAutoConfiguration
,它为生成的WebClient
提供WebClient.Builder
和定制器。可能可以重用WebClient.Builder
,它已经在spring上下文中并设置另一个baseUrl,但创建新的构建器并配置它似乎是更好的方法。可能的示例: