我正在使用Spring Rest模板执行Delete操作。
我收到400错误请求。但是,相同的要求正在与Postman一起使用。 网址:http://localhost:8080/product-service/customer/123456/customer-items/US?productCode=A-124896
控制器代码:
@DeleteMapping(value = "/customer/{customer-number}/customer-items/{country}", params = {"uline-item-number"} , produces = {"application/json"})
public ResponseEntity<Boolean> deleteCustomerItem( @PathVariable("customer-number") final String customerNumber,
@PathVariable("country") final String countryCode,
@RequestParam("productCode") final String productCode) {
try {
return new ResponseEntity<>(appCustomerService.deleteCustomerItem(customerNumber, countryCode, productCode), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getMessage(), e);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
服务编号:
public Boolean deleteCustomerItem(String customerNumber, String countryCode, String productCode)
throws Exception{
Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("productCode", productCode);
String productUrl = http://localhost:8080/product-service/customer/123456/customer-items/US";
try {
restTemplate.exchange(productUrl , HttpMethod.DELETE, HttpEntity.EMPTY, Void.class, uriVariables);
return true;
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
我在请求中缺少任何内容吗?请帮助我解决此问题。
答案 0 :(得分:0)
您弄乱了路径参数和查询参数。以下应该可以正常工作:
String url = "http://localhost:8080/product-service/customer/{customer-number}/customer-items/{country}";
// Path parameters should be here
Map<String, String> uriParams = new HashMap<>();
uriParams.put("customer-number", "123456");
uriParams.put("country", "US");
URI productUri = UriComponentsBuilder.fromUriString(url)
.queryParam("productCode", productCode) // query parameters should be here
.buildAndExpand(uriParams)
.toUri();
restTemplate.exchange(productUri, HttpMethod.DELETE, HttpEntity.EMPTY, Void.class);