Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

¡Ojo! Por defecto, las llamadas con WebClient son asíncronas, no bloqueantes. La instrucción block() del final sirve para hacerlas bloqueantes, para esperar a la respuesta antes de seguir. 


Para obtener las respuestas, disponemos de dos clases Mono y Flux, vamos a ver para qué usamos cada una.

Recibir un solo elemento: Mono

Como hemos visto en el ejemplo anterior, con .bodyToMono indicamos que se recibe un elemento, y la respuesta se mapeará a la clase que pongamos. De este modo, se podrá mapear directamente a un DTO propio si la estructura de la respuesta coincide con éste.

En el caso de que queramos obtener la respuesta como un Map con las claves y valores que hemos recibido, haremos uso de ParameterizedTypeReference, así:

Bloque de código
languagejava
.bodyToMono( new ParameterizedTypeReference<Map<String, Object>>() {} ).block();

Recibir una lista de elementos: Flux

En el caso de que vayamos a recibir una lista de elementos, podemos usar Flux. La forma de usarlo es muy parecida a Mono, pero utilizando .bodyToFlux en lugar de .bodyToMono, e indicando .collectList después para obtener la lista. Por ejemplo, para recibir una lista de Strings sería:

Bloque de código
languagejava
.bodyToFlux(String.class).collectList().block();

Y para recibir una lista de Maps, al igual que hemos visto en Mono:

Bloque de código
.bodyToFlux( new ParameterizedTypeReference<Map<String, Object>>() {} ).collectList().block();

Body con Content-Type: application/x-www-form-urlencoded

...