PATCH请求方法:字段映射

时间:2017-04-14 12:11:03

标签: java rest mapping patch dozer

我在我的RESTful服务(Spring,Java)中实现了PATCH请求方法。我在控制器方法中使用DTO对象。我正在使用Dozer将这些DTO映射到实体。

使用PATCH请求方法我有一个明显的问题:具有null值的字段可能意味着实体字段应该更新为null,或者实体字段应该保持不变。浏览了互联网上的一些帖子后,我决定在uri参数中接受一个明确无效的字段列表(我将这个列表称为nullFields)。如果接收的值为空,则所有其他字段将保持不变。

现在我可以看到实现此解决方案的3种可能方法:

  1. 像往常一样使用Dozer地图对象,跳过具有空值的字段。然后将字段从nullFields显式设置为null。我将不得不迭代nullFields的值并调用实体的适当setter方法。我不喜欢这个选项,因为每次添加,删除或重命名对象字段时,我都必须更改此字段到设置器映射。
  2. 与上面相同 - Dozer映射我的对象,然后将一些字段显式设置为null - 但使用反射。然后我不必维持1中描述的字段到设置映射。但是我必须使用被认为是不好的反射。
  3. 通过动态或以其他方式更改映射配置,让Dozer跳过nullFields中包含的字段。但我无法找到如何做到这一点。所以,我的问题是,有可能吗?
  4. 我还要感谢实现PATCH请求方法的任何其他方法。我考虑过使用JSON对象而不是DTO,但除非我别无选择,否则我不太喜欢这种替代方案。

0 个答案:

没有答案