web-dev-qa-db-fra.com

A quoi sert la méthode restTemplate.exchange ()?

En fait, que fait la méthode restTemplate.exchange()?

@RequestMapping(value = "/getphoto", method = RequestMethod.GET)
public void getPhoto(@RequestParam("id") Long id, HttpServletResponse response) {

    logger.debug("Retrieve photo with id: " + id);

    // Prepare acceptable media type
    List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
    acceptableMediaTypes.add(MediaType.IMAGE_JPEG);

    // Prepare header
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(acceptableMediaTypes);
    HttpEntity<String> entity = new HttpEntity<String>(headers);

    // Send the request as GET
    ResponseEntity<byte[]> result = 
        restTemplate.exchange("http://localhost:7070/spring-rest-provider/krams/person/{id}", 
                              HttpMethod.GET, entity, byte[].class, id);

    // Display the image
    Writer.write(response, result.getBody());
}
15
sneha

La documentation de la méthode est assez simple:

Exécutez la méthode HTTP sur le modèle d'URI donné en écrivant l'entité de demande donnée dans la demande et renvoie la réponse sous la forme ResponseEntity .

Les variables de modèle d'URI sont développées à l'aide des variables d'URI données, le cas échéant.


Considérons le code suivant extrait de votre question:

ResponseEntity<byte[]> result = 
    restTemplate.exchange("http://localhost:7070/spring-rest-provider/krams/person/{id}", 
                          HttpMethod.GET, entity, byte[].class, id);

Nous avons les éléments suivants:

  • Une demande GET sera effectuée sur l'URL donnée, en envoyant les en-têtes HTTP encapsulés dans l'instance HttpEntity
  • Puisque l'URL contient une variable de modèle ({id}), elle sera remplacée par la valeur indiquée dans le dernier paramètre de la méthode (id).
  • L'entité de réponse sera renvoyée sous la forme d'un byte[] encapsulé dans une instance ResponseEntity .
12
cassiomolin

La méthode Exchange exécute la méthode HTTP sur le modèle d'URI spécifié, en transmettant les paramètres à remplacer. Dans ce cas, il obtient une image pour une entité personne pour son paramètre Id et renvoie le tableau d'octets correspondant.

0
Matt T.

L'API d'échange plus générique nécessite un paramètre HttpMethod et un objet de requête pour être complet. Comparer:

ResponseEntity<Foo> response = 
restTemplate.exchange(url, HttpMethod.GET, request, Foo.class);

ResponseEntity<Foo> response = 
restTemplate.getForEntity(url, Foo.class);
0
Gapmeister66