web-dev-qa-db-fra.com

Comment ajouter l'URI de base dans RestTemplate

Existe-t-il un autre moyen d’initialiser RestTemplate avec un URI de base autre que Étendre RestTemplate et écraser la méthode execute.

class CustomRestTemplate extends RestTemplate {
String baseUrl

@Override
protected  T doExecute(URI url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor responseExtractor) throws RestClientException {
    return super.doExecute(new URI(baseUrl + url.toString()), method, requestCallback, responseExtractor)
}
12
Amit Swain

Printemps 5.0:

Cela envoie une demande GET à http://localhost:8080/myservice

RestTemplate restTemplate = new RestTemplate();
restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory("http://localhost:8080"));
restTemplate.getForObject("/myservice", String.class);
15
Mateusz Stefek

Vous pouvez créer votre DefaultUriTemplateHandler personnalisé

DefaultUriTemplateHandler defaultUriTemplateHandler = new DefaultUriTemplateHandler();
defaultUriTemplateHandler.setBaseUrl(url);

Et puis ajoutez-le à restTemplate

return new RestTemplateBuilder()
      .uriTemplateHandler(defaultUriTemplateHandler)
      .build();
6
dehasi

Si vous utilisez Spring Boot, vous pouvez utiliser org.springframework.boot.web.client.RestTemplateBuilder.rootUri(baseUrl).build()

4
Somu

RestTemplate (version 4.2.0.RELEASE) de Spring prend en charge une méthode nommée setUriTemplateHandler. Si cela n'est jamais défini, il contient une DefaultUriTemplateHandler

DefaultUriTemplateHandler supporte une méthode nommée 'setBaseUrl`

Donc, vous pouvez définir l'URL de base ici.

0
Darius X.