我正在编写 JUnit 测试,通过 RestTemplate 调用我的应用程序。我已经成功实现了 GET、POST 和 PUT,但无法运行 PATCH(尽管它在客户端发送 URL 时有效)。例如,POST 使用以下代码运行:
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
在应用程序中,我在 Controller 类中定义了操作:
@RequestMapping(value = "/batchUpdateProductPositions", method = RequestMethod.PATCH)
public MessageModel batchUpdatePosition(
@RequestBody ProductPositionListModel productPositionList)
throws Exception {
try {
return productService.batchUpdatePosition(productPositionList);
} catch (Exception e) {
我在'try'块内的return语句上放了一个断点,但是当我在调试下运行它时它从未跳闸。
谁能告诉我我在哪里绊倒了?