как я могу передать параметры в restTemplate в метод put контроллера - PullRequest
0 голосов
/ 28 декабря 2018

У меня проблема с передачей параметров.У меня есть имена в моем доходном приложении, и я хочу обновить их, передав параметры новых имен из моего приложения для отдыха.Это мой код:

String url = "http://localhost:8084/rest/api/income/UpdateName/{oldName}/{newName}"; // the Url of the rest


    Map<String, String> params = new HashMap<>();
    params.put("oldName", oldName);
    params.put("newName", newName);
    Income income = new Income();

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.put(url, income, params);
    System.out.println(params);
}    

К сожалению, этот код не работает, что я могу сделать?

Это метод put в контроллере:

@CrossOrigin
@GetMapping("/UpdateName/{oldName}/{clientName}") // view all incomes ..
public GeneralResponse viewAllIncome(@PathVariable("oldName") String oldName,@PathVariable("clientName") String clientName) {

    return new GeneralResponse(incomeServiceTemplate.updateClientName(oldName,clientName));

}    

1 Ответ

0 голосов
/ 28 декабря 2018

Конечной точкой является GET, а не PUT, просто добавьте параметры в URL и вызовите:

String url = "http://localhost:8084/rest/api/income/UpdateName/"+oldName+"/"+newName;

RestTemplate restTemplate = new RestTemplate();
restTemplate.getForObject(url, Income.class);

Или есть лучший способ, используйте uriComponentsBuilder.Он заботится о кодировке URL:

UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
    .queryParam("oldName", oldName)
    .queryParam("newName", newName);
restTemplate.getForEntity(builder.build().encode().toUri(), Income.class);
...