如何获取 Person 而不是 Mono<Person>?
How to get Person instead of Mono<Person>?
关于下面的检索代码,请问如何获取 Person 而不是 Mono 或如何从 Mono 获取 Person?
23.2.3 Request and Response Body Conversion
响应正文可以是以下之一:
Account⟩—⟨序列化而不阻塞给定的Account;暗示一个同步的、非阻塞的控制器方法。
WebClient client = WebClient.create("http://example.org");
Mono<Person> result = client.get()
.uri("/persons/{id}", id).accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Person.class);
一旦您有 Mono<Person>
个可用实例,您有两个选择:
- 组合该反应类型(即使用该类型可用的运算符)并使用它将该数据保存在数据存储中,将其用作 HTTP 响应主体等
- 或对其调用
Person person = result.block()
,这 阻塞 。所以你不应该在反应式应用程序中这样做,因为这可能会完全阻塞你的应用程序可用的几个线程。
关于下面的检索代码,请问如何获取 Person 而不是 Mono 或如何从 Mono 获取 Person?
23.2.3 Request and Response Body Conversion
响应正文可以是以下之一:
Account⟩—⟨序列化而不阻塞给定的Account;暗示一个同步的、非阻塞的控制器方法。
WebClient client = WebClient.create("http://example.org");
Mono<Person> result = client.get()
.uri("/persons/{id}", id).accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Person.class);
一旦您有 Mono<Person>
个可用实例,您有两个选择:
- 组合该反应类型(即使用该类型可用的运算符)并使用它将该数据保存在数据存储中,将其用作 HTTP 响应主体等
- 或对其调用
Person person = result.block()
,这 阻塞 。所以你不应该在反应式应用程序中这样做,因为这可能会完全阻塞你的应用程序可用的几个线程。