json - Java 中的 JSON 补丁请求验证
问题描述
在我的 Spring Boot 服务中,我使用https://github.com/java-json-tools/json-patch来处理 PATCH 请求。
除了避免修改对象 id、creation_time 等不可变字段的方法外,一切似乎都很好。我在 Github https://github.com/java-json-tools/json-patch/issues/21上发现了一个类似的问题我找不到正确的例子。
这个博客似乎提供了一些关于使用 node.js 中的解决方案验证 JSON 补丁请求的有趣解决方案。很高兴知道 JAVA 中是否已经存在类似的东西。
解决方案
在许多情况下,您可以只修补一个只有用户可以写入的字段的中间对象。之后,您可以使用一些对象映射器或手动将中间对象轻松映射到您的实体。
这样做的缺点是,如果您要求字段必须显式可为空,您将不知道补丁对象是否将字段显式设置为空,或者它是否从未出现在补丁中。
您也可以为此滥用 Optionals,例如
public class ProjectPatchDTO {
private Optional<@NotBlank String> name;
private Optional<String> description;
}
尽管 Optionals 不打算像这样使用,但它是在保持类型化输入的同时实现补丁操作的最直接的方法。当可选字段为空时,它永远不会从客户端传递。当可选项不存在时,这意味着客户端已将该值设置为空。
推荐阅读
- ios - record(forDuration:) method stops on its own
- prolog - Solving the Graph Coloring with 3 color and lists - Prolog
- python - Django not rendering Crispy Form Fields from model
- javascript - How to disable esc and window keys in Javascript
- ios - Indexpath.row incremented by two values not one
- azure-sql-database - Keywords such as GENERATED are not available on Azure SQL Studio
- facebook-graph-api - How to Set Specific Dimension of Profile Picture in Facebook Graph Api Request?
- python - Python Gensim FastText 保存和加载模型
- database - liquibase 是否支持从一个数据库到另一个数据库的数据迁移
- java - RecyclerView ViewHolder中的if语句导致item重复