在下一个 API 调用中使用 Spring WebClient 响应?
Use Spring WebClient response in next API call?
我想在下一个 API 调用中使用 WebClient 响应。因此,在调用下一个 api 之前,从响应中提取一些字段并在下一个 api 调用中使用它们。有一种方法可以阻止 WebClient 响应并使用它。但是有没有办法做到不阻塞呢?所以我的代码看起来像这样
response = getUserByWebClient1(); // web client call 1
extract id from response
getRolesByUserId(id); // webclient call 2
这不是 WebClient
特有的,而是反应类型的一般概念,这里是 Reactor Flux
和 Mono
。
您可以使用 the flatMap operator 来实现这一点。
// given UserService with a method "Mono<User> getCurrentUser()"
// and RolesService with a method "Mono<RoleDetails> getRolesForUser(Long userId)"
Mono<RolesDetails> roles = userService.getCurrentUser()
.flatMap(user -> rolesService.getRolesForUser(user.getId());
我想在下一个 API 调用中使用 WebClient 响应。因此,在调用下一个 api 之前,从响应中提取一些字段并在下一个 api 调用中使用它们。有一种方法可以阻止 WebClient 响应并使用它。但是有没有办法做到不阻塞呢?所以我的代码看起来像这样
response = getUserByWebClient1(); // web client call 1
extract id from response
getRolesByUserId(id); // webclient call 2
这不是 WebClient
特有的,而是反应类型的一般概念,这里是 Reactor Flux
和 Mono
。
您可以使用 the flatMap operator 来实现这一点。
// given UserService with a method "Mono<User> getCurrentUser()"
// and RolesService with a method "Mono<RoleDetails> getRolesForUser(Long userId)"
Mono<RolesDetails> roles = userService.getCurrentUser()
.flatMap(user -> rolesService.getRolesForUser(user.getId());