这是另一个代码(用于车辆维修),工作正常
public ResponseEntity updateByVehicleId(Vehicle vehicle, BigInteger id) {
if (id == null || id.compareTo(BigInteger.ZERO) < 0) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid id");
}
if (vehicle == null) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid vehicle object");
}
Vehicle mod = repository.findById(id).orElseThrow(() -> new NoSuchElementException("Vehicle not found with id " + id));
vehicle.setModifiedDate(new Date());
repository.save(vehicle);
return ResponseEntity.status(HttpStatus.OK).body("vehicle details modified successfully");
}
这是我用于车辆管理服务的代码
public Vehicle updateByVehicleId(Vehicle vehicle,BigInteger id) {
RestTemplate restTemplate = new RestTemplate();
HttpEntity<Vehicle> request = new HttpEntity<>(vehicle);
ResponseEntity<Vehicle> response = restTemplate.exchange(RESTTEMPLATE_GET_BY_VEHICLE_ID, HttpMethod.PUT, request, Vehicle.class, id);
return response.getBody();
}
从中调用车辆的控制器类。
public static final String GET_BY_VEHICLE_ID = "/vehicle/{id}";
@PutMapping(GET_BY_VEHICLE_ID)
public Vehicle updateByVehicleId(@PathVariable BigInteger id,@RequestBody Vehicle vehicle) {
logger.info("Log level:updated vehicle details");
return vmsService.updateByVehicleId(vehicle,id);
}
我得打个电话到车辆管理处去。
我尝试使用车辆ID更新所有车辆详细信息,有两种服务:一个是车辆,另一个是车辆管理服务
当我尝试更新车辆中的细节时,它工作正常。但是,同样的,当我尝试为此API创建REST模板时,它没有更新数据,而是给出错误:
{请求处理失败;嵌套异常是org.springframework.web.客户端。HttpClientErrorException$不允许的方法:405不允许的方法:[无正文]}。
这是我在 Postman x1c 0d1x中发送的请求
这是控制台
上的错误
1条答案
按热度按时间agxfikkp1#
由于您在Controller中使用此签名:
您需要确保发送给它的HttpRequest包含以下内容:
PUT
id
-即/vms/vehicle/{id}
Vehicle
示例。例如:
然后,在您的方法中:
您再次调用
restTemplate
,但不需要调用RestTemplate来将项目存储在存储库中。相反,您可以简单地调用