Spring boot:PATCH没有映射模型,而相同的POST方法也是如此

时间:2018-03-03 21:25:37

标签: spring rest spring-boot

我有以下两种REST方法:

@PostMapping
public Object create(@ModelAttribute("building") @Validated Building building) {
    if (building != null && !(building.getName().equals("") || building.getAddress().equals(""))) {
        return buildingDao.save(building);
    }
    return HttpStatus.NOT_FOUND;
}

@PatchMapping
public Object update(@ModelAttribute("building") @Validated Building building) {
    if (building.getId() != null && buildingDao.findById(building.getId()).isPresent()) {
        return buildingDao.save(building);
    }
    return HttpStatus.NOT_FOUND;
}

正如你所看到的那样,它们是准确的,除了一种方法是POST而另一种方法是PATCH。

我的问题是'建设'我使用PATCH方法时不会映射。我试图删除@Validated,所有字段都为空。已经使用Postman和axios(javascript)进行了测试。我不太明白为什么它不会工作,然后POST方法可以完美运行。

我使用的是Spring Boot 2.0.0.RELEASE

也许相关代码: 控制器定义:

@RestController
@RequestMapping("/buildings")
public class BuildingController { [...] }

如果有必要,我很乐意添加更多代码。

1 个答案:

答案 0 :(得分:0)

通过将@ModelAttribute更改为@RequestBody来解决此问题。