2013-11-25 2 views
6

На самом деле что делает метод restTemplate.exchange()?Что такое метод 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()); 
} 

ответ

0

Метод обмена выполняет метод HTTP против указанного шаблона URI, передавая параметры для замены. В этом случае он получает изображение для объекта person для своего параметра Id и возвращает для него массив байтов.

6

method documentation довольно прост:

Выполнить метод HTTP для данного шаблона URI, написание данного объекта запроса на запрос и возвращает ответ в виде ResponseEntity.

Переменные шаблона URI расширяются с использованием заданных переменных URI, если они есть.


Considere следующий код извлекается из Вашего вопроса:

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

Мы имеем следующее:

  • GET запрос будет выполняться для данного URL отправки заголовков HTTP которые завернуты в экземпляр HttpEntity.
  • Поскольку URL-адрес содержит переменную шаблона ({id}), он будет заменен значением, указанным в последнем параметре метода (id).
  • Объект ответа будет возвращен как byte[], завернутый в экземпляр ResponseEntity.