rest - 不要使用 JHipster/Spring Boot 验证 REST 层中的某些字段

标签 rest validation spring-boot jhipster

使用 JHipster 生成新实体时,我添加了必需的字段,但我没有在前端应用程序的输入表单中显示它们。这些是后端应该填写的字段。为了说明这一点,请考虑一个假设的博客应用程序。我有一个 Post 实体,它有一个用 @NotNull 注释的字段 createdDate。服务层负责设置保存实体时的当前日期。

当用户创建新帖子时,其字段将得到验证。尽管用户无法选择输入 createdDate,但服务器会返回一个验证错误,指出 createdDate 不能为空。这是因为 Resource 类中的 @Valid 注释。同时,我不想从实体类中删除 @NotNull 注释,因为数据库中需要此字段。

然后我决定重新生成相同的实体,但这次我选择了 DTO 选项。现在我可以从 DTO 类的 createdDate 字段中删除 @NotNull 。我不再从 REST 层收到任何验证错误,DTO 映射到实体对象,并且在保存时,我添加当前日期。

我是否通过引入 DTO 和 Mapper 类来过度设计这个问题,或者这是一个合理的解决方案?

最佳答案

DTO 对于您的用例来说是一种很好的方法,无论您使用 MapStruct 生成的映射器还是手写的映射器,都取决于您的映射的复杂程度。

在 JHipster 中使用 DTO 的其他原因是:

  • 根据用户角色隐藏一些数据
  • 能够在不影响 REST API 的情况下发展您的实体
  • 设置某些字段的格式
  • 将多个实体的数据聚合到一个 DTO 中,以避免过多的请求(尤其是移动客户端)

关于rest - 不要使用 JHipster/Spring Boot 验证 REST 层中的某些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40632712/

相关文章:

java - 响应中未显示 Spring Boot 验证错误消息

web-services - 您能否帮助澄清有关 RESTful 服务和代码生成的一些要点?

javascript - 为什么我的模板上的数据没有从我的 Angular 范围渲染?

java - Java/Spring中接收POST请求并获取JSON元素

php - 如何使 CodeIgniter 可调用留空的复选框,自定义表单验证错误

c# - 使用不同的 UpdateSourceTrigger 进行验证和转换

rest - 400 与 422 对数据 POST 的响应

database - 如何获取基准数据(TPC-H)

mongodb - 尝试使用GORM访问MongoDB数据时出现错误

java - Spring Boot 应用程序在外部 TOMCAT 中启动后立即关闭