在下一个 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 FluxMono

您可以使用 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());