Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RestTemplate uriVariables not expanded

People also ask

What is Urivariables?

A URI path template has one or more variables, with each variable name surrounded by curly braces, { to begin the variable name and } to end it. In the example above, username is the variable name.

What is difference between getForObject and getForEntity?

For example, the method getForObject() will perform a GET and return an object. getForEntity() : executes a GET request and returns an object of ResponseEntity class that contains both the status code and the resource as an object. getForObject() : similar to getForEntity() , but returns the resource directly.

Does RestTemplate support all HTTP methods?

Rest Template is used to create applications that consume RESTful Web Services. You can use the exchange() method to consume the web services for all HTTP methods.

Is RestTemplate exchange thread safe?

RestTemplate is thread-safe once constructed. Objects of the RestTemplate class do not change any of their state information to process HTTP: the class is an instance of the Strategy design pattern.


There is no append some query string logic in RestTemplate it basically replace variable like {foo} by their value:

http://www.sample.com?foo={foo}

becomes:

http://www.sample.com?foo=2

if foo is 2.


The currently-marked answer from user180100 is technically correct but not very explicit. Here is a more explicit answer, to help those coming along behind me, because the answer didn't quite make sense to me at first.

String url = "http://www.sample.com?foo={fooValue}";

Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("fooValue", "2");

// "http://www.sample.com?foo=2"
restTemplate.getForObject(url, Object.class, uriVariables);