Я кодирую тесты JUnit, вызывая мое приложение через RestTemplate. Я успешно реализовал GET, POST и PUT, но не могу запустить PATCH (хотя он работает, когда клиент отправляет URL-адрес). Столбу, к примеру, работает с этим кодом:Как реализовать PATCH, выполненный с помощью RestTemplate?
RestTemplate restTemplate = new RestTemplate();
ProductModel postModel = restTemplate.postForObject(TestBase.URL + URL, pModel, ProductModel.class);
, но когда я попытался вызвать restTemplate.patchForObject() - который я нашел в Интернете - STS возвращает ошибку о том, что функция не определена. Таким образом, я использовал это:
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<MessageModel> retval = restTemplate.exchange("http://localhost:8080/products/batchUpdateProductPositions",
HttpMethod.PATCH, new HttpEntity<ProductPositionListModel>(pps), MessageModel.class);
который компилирует, но дает мне ошибку:
I/O Error on PATCH request for "http://localhost:8080/products/batchUpdateProductPositions": Invalid HTTP method: PATCH
В приложении я операция, определенная в классе контроллера:
@RequestMapping(value = "/batchUpdateProductPositions", method = RequestMethod.PATCH)
public MessageModel batchUpdatePosition(
@RequestBody ProductPositionListModel productPositionList)
throws Exception {
try {
return productService.batchUpdatePosition(productPositionList);
} catch (Exception e) {
I поставьте точку останова на оператор return внутри блока try, но он никогда не срабатывал, когда я запускал его под отладкой.
Может ли кто-нибудь сказать мне, где я споткнулся?
HTTP://stackoverflow.com/questions/29447382/resttemplate-patch-request –