2013-11-25 19 views
6

In realtà cosa fa il metodo restTemplate.exchange()?Per che cosa è il metodo 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()); 
} 

risposta

0

Il metodo di scambio esegue il metodo HTTP rispetto al modello URI specificato, passando i parametri per la sostituzione. In questo caso ottiene un'immagine per un'entità persona per il suo parametro Id e restituisce l'array di byte per esso.

6

Il method documentation è piuttosto semplice:

eseguire il metodo HTTP al dato modello di URI, scrivendo la data entità richiesta alla richiesta, e restituisce la risposta come ResponseEntity.

Le variabili del modello URI vengono espanse utilizzando le variabili URI fornite, se presenti.


considere il seguente codice estratto dalla tua domanda:

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

abbiamo le seguenti:

  • Una richiesta GET verrà eseguita alla URL dato inviare le intestazioni HTTP che sono avvolti nell'istanza HttpEntity.
  • Poiché l'URL contiene una variabile modello ({id}), verrà sostituito con il valore indicato nell'ultimo parametro del metodo (id).
  • L'entità di risposta verrà restituita come byte[] inserita in un'istanza ResponseEntity.