我正在编写JUnit测试,通过RestTemplate调用我的应用程序。我已经成功实现了GET,POST和PUT,但无法获得PATCH来运行(尽管它在客户端通过URL发送时起作用)。一个帖子,例如,运行这段代码:如何实现通过RestTemplate执行的PATCH?
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);
其中编译,但给我一个错误:
@RequestMapping(value = "/batchUpdateProductPositions", method = RequestMethod.PATCH)
public MessageModel batchUpdatePosition(
@RequestBody ProductPositionListModel productPositionList)
throws Exception {
try {
return productService.batchUpdatePosition(productPositionList);
} catch (Exception e) {
I:
I/O Error on PATCH request for "http://localhost:8080/products/batchUpdateProductPositions": Invalid HTTP method: PATCH
在应用中,我已经在控制器类中定义的操作在'try'块内的return语句上放置一个断点,但是当我在调试下运行它时,它从不跳闸。
谁能告诉我我绊倒了哪里?
HTTP:/ /stackoverflow.com/questions/29447382/resttemplate-patch-request –