gpt4 book ai didi

java - PATCH请求方法: field mapping

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:43 24 4
gpt4 key购买 nike

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

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

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

  1. 像往常一样拥有 Dozer map 对象,跳过具有空值的字段。然后将 nullFields 中的字段显式设置为 null。我必须迭代 nullFields 的值并调用实体的适当 setter 方法。我不喜欢这个选项,因为每次添加、删除或重命名对象字段时,我都必须更改此字段到 setter 的映射。
  2. 与上面相同 - Dozer 映射我的对象,然后将一些字段显式设置为 null - 但使用反射。那么我就不必维护 1 中描述的字段到 setter 映射。但我必须使用反射,这被认为是一种不好的做法。
  3. 通过动态或其他方式更改映射配置,让 Dozer 跳过 nullFields 中包含的字段。但我不知道该怎么做。所以,我的问题是,这可能吗?

我也希望有任何其他方法来实现 PATCH 请求方法。我考虑过使用 JSON 对象而不是 DTO,但我不太喜欢这种替代方案,除非我别无选择。

最佳答案

我在 PATCH 请求方面遇到了类似的问题,为了处理空值,我编写了自定义推土机映射器。您可以阅读此信息 bypass mapping of null or empty values

实现 PATCH 请求的另一种方法在(JSON) Patch中给出。 。此外,还有适用于此 RFC Java Library to find / apply JSON Patches 的开源实现.

关于java - PATCH请求方法: field mapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43411278/

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