2013-11-25 10 views
6

Was macht eigentlich die restTemplate.exchange() Methode?Was ist die Methode restTemplate.exchange() für?

@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()); 
} 

Antwort

0

Die Austauschmethode führt die HTTP-Methode für die angegebene URI-Vorlage aus und übergibt die Parameter für den Austausch. In diesem Fall erhält es ein Bild für eine Personenentität für seinen Id-Parameter und gibt das Byte-Array dafür zurück.

6

Die method documentation ist ziemlich einfach:

Führen Sie die HTTP-Methode an der Vorlage URI gegeben, die gegebene Anfrage Einheit auf die Anfrage zu schreiben, und gibt die Antwort als ResponseEntity.

URI Template-Variablen werden ggf. um die angegebenen URI-Variablen erweitert.


Considere der folgende Code aus Ihrer Frage extrahiert:

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

Wir haben die folgenden:

  • A GET Anfrage wird an der angegebenen URL ausgeführt werden, um die HTTP-Header zu senden Diese sind in der HttpEntity Instanz verpackt.
  • Da die URL eine Vorlagenvariable enthält ({id}), wird sie durch den im letzten Methodenparameter (id) angegebenen Wert ersetzt.
  • Die Antworteinheit wird als byte[] in eine ResponseEntity Instanz zurückgegeben.
Verwandte Themen