gpt4 book ai didi

java - 如何修复补丁中的 422 状态响应

转载 作者:行者123 更新时间:2023-12-01 23:54:30 27 4
gpt4 key购买 nike

我有一个react前端和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."));
}

Controller :

@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 补丁 http://...../bmwsales/updateWeb/69406/ 422

看起来正在发生这种情况......当前临时位置中没有值,我正在尝试更新它......如何更改我的对象映射器以接受当前值可以为空?我想这就是问题所在......也许......

javax.json.JsonException:'{“id”:69406,“rfidtag”:“E200420C71A06015010B6362”}'不包含名称“templocation”的值

好的,我想我解决了这个问题....我更改了 Jackson 配置以注释掉 setdefaultpropertyinclusion 以仅包含非 null。现在没关系了。但现在 json 补丁不再更新我指出的 2 个字段,而是尝试更新整个对象。我该如何限制这一点?

最佳答案

也许您可以使用 MediaType 类中的值 APPLICATION_JSON_VALUE 设置 @PatchMapping 内的 consumes 属性以及带有 URL 字符串的 value 字段,同时检查您的 Bmwsales 对象并查看所有字段是否与您的请求匹配。

希望这有帮助。

关于java - 如何修复补丁中的 422 状态响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58209284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com