web-dev-qa-db-fra.com

Spring Boot Webclient's retrieve vs exchange

J'ai commencé à utiliser WebClient dans mon projet Spring boot récemment. Quelqu'un peut-il éclairer les différences/usages entre la méthode exchange et retrieve dans WebClient.

Je comprends que exchange renvoie Mono<ClientResponse> et retrieve renvoie ResponseSpec, je veux juste savoir quand/pourquoi je devrais utiliser chacun d'eux.

Merci beaucoup.

7
Abdullah Khan

Ajout à @ JArgente réponse.

Selon la documentation officielle de la méthode retrieve() :

Exécutez la requête HTTP et récupérez le corps de réponse .

...

Cette méthode est un raccourci pour utiliser exchange () et décoder le corps de la réponse via ClientResponse.

et la méthode exchange()

Exécutez la demande HTTP et renvoyez une ClientResponse avec le statut de réponse et les en-têtes . Vous pouvez ensuite utiliser des méthodes de réponse pour consommer le corps:


La méthode de récupération décode l'objet ClientResponse et vous remet l'objet prêt à l'emploi pour votre usage. Il n'a pas une API très agréable pour gérer les exceptions.

Cependant, d'autre part, la méthode d'échange vous remet l'objet ClientResponse lui-même avec le statut de la réponse et les en-têtes. Avec la méthode d'échange, vous obtenez un contrôle fin sur vos objets de réponse et une meilleure façon de gérer l'objet de réponse et les exceptions.

Si vous voulez juste consommer des api, allez avec retrieve().

Si vous voulez un meilleur contrôle sur vos objets de réponse, en-têtes et exceptions, allez avec exchange().

1
Abdullah Khan