У меня есть фронт реакции и бэкэнд Java. Я использую запрос axios.patch и получаю ответ 422. Я не знаю, что не так. Я хотел бы, чтобы это обновлялось правильно. Я использую jsonpatch, чтобы попытаться обновить этот объект.
Я пробовал множество вещей. Что-то не так с моей просьбой? Я не знаю.
Вот мой код:
return API.patch(`bmwsales/updateWeb/${vid}/`, veh, {headers: {
'Authorization' : basic }})
.then((response) =>{
if (response.status==200){
dispatch(updateVehicleSuccess());
}
}, (error) =>{
if (error.response.status == 500){
dispatch(vehicleError(error.message, "Could not update rfidtag, please try again."));
}else if
(error.response.status == 422){
dispatch(vehicleError(error.message, "Could not update rfidtag, please try again."));
}
контроллер:
@PatchMapping("/bmwsales/updateWeb/{id}")
public ResponseEntity<?> updateVehicleTagWeb(@PathVariable(value="id") Integer id, @RequestBody Bmwsales v) throws JsonProcessingException{
ObjectMapper objMapper=new ObjectMapper();
JsonPatchBuilder jsonPatchBuilder=Json.createPatchBuilder();
JsonPatch jsonPatch=jsonPatchBuilder.replace("/templocation",v.getTemplocation()).replace("/rfidtag", v.getRfidtag()).build();
Bmwsales vehicle=bmwService.getVin(id).orElseThrow(ResourceNotFoundException::new);
BmwsalesUpdate veh=oMapper.asInput(vehicle);
BmwsalesUpdate h=patchHelp.patch(jsonPatch, veh, BmwsalesUpdate.class);
oMapper.INSTANCE.update(vehicle, h);
return new ResponseEntity<>(h, HttpStatus.OK);
Я хотел бы знать, как это исправить ....
ошибка: xhr.js: 178 PATCH http: //...../bmwsales/updateWeb/69406/ 422
Похоже, что это происходит .... там в настоящее время нет значения в templocation, и я пытаюсь обновить его .... как я могу изменить мой объект сопоставления, чтобы принять, что текущее значение может быть нулевым? Я думаю, что это проблема ... возможно ...
javax.json.JsonException: '{"id": 69406, "rfidtag": "E200420C71A06015010B6362"}' не содержит значения для имени 'templocation '
ОК. Я думаю, что исправил это .... Я изменил свой Jackson Config, чтобы закомментировать setdefaultpropertyinclusion, чтобы включить только ненулевое значение. Теперь это нормально. Но теперь вместо обновления 2 полей, которые я указал, патч json пытается обновить весь объект. Как я могу ограничить это?