Was ist das restTemplate.exchange () - Methode für?
Eigentlich, was tut der restTemplate.exchange()
Methode tun?
@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());
}
- Ich nehme an, der name exchange hat einige Bedeutung. Schade, dass die Dokumentation und die Antworten hier nicht angeben, was sind die Themen dieses Austauschs.
- "...die einzige Möglichkeit zum senden von Headern wie akzeptieren und Autorisierung ist die Verwendung des exchange-Methode..."
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Methode Dokumentation ist ziemlich einfach:
Betrachten Sie den folgenden code extrahiert aus Ihren eigenen Frage:
Wir haben die folgenden:
GET
Anfrage wird durchgeführt, um die angegebene URL senden der HTTP-Header, die sind verpackt in derHttpEntity
Instanz.{id}
), es wird ersetzt durch den Wert gegeben, den letzten parameter der Methode (id
).byte[]
eingewickelt in eineResponseEntity
Instanz.RestTemplate
synchron ist. Siehe die Dokumentation.Den exchange-Methode wird die HTTP-Methode für die angegebene URI-template, übergabe der Parameter für Ersatz. In diesem Fall wird es ein Bild für eine person-Entität für seine Id-parameter und gibt das byte-array für Sie.
Den mehr generischen exchange-API-erfordert eine HttpMethod-parameter und request-Objekt auf Vollständigkeit. Vergleichen: