java - Spring Boot验证,反序列化requestBody时期望字段,但不来自responseBody

标签 java spring-boot validation jackson lombok

我想知道 Spring Boot 最佳实践。

我有一个 Spring Boot API,它基本上公开了另一个 API。 这是一种必要的罪恶。 外部 API 完全是一场灾难,我们无法直接将其暴露给我们的客户。

问题是这个 API 有时需要 requestBody 中的字段, 但不会将它们退还给消费者。

将其转换为 Spring Boot(Javax 验证或 Lombok)。 我不能只在这些字段上添加 @Notnull 或 @Nonnull 注释。 因为当 Jackson 尝试反序列化 responseBody 时,它会失败。

我应该在这里做什么?

  • 我应该创建一个单独的 ObjectIn 和 ObjectOut
  • 我应该删除注释并在restController 中进行自定义条件检查
  • 我应该完全做点别的事情吗

最佳答案

如果请求和响应有效负载不同,则使用不同的类来表示它们可能是有意义的。为了处理将 DTO 映射到域模型(以及相反的方式)的样板代码,您可以查看映射框架,例如 MapStruct ,它与 Spring 集成得很好。

除了为输入和输出定义不同的类之外,您还可以研究验证组。

关于java - Spring Boot验证,反序列化requestBody时期望字段,但不来自responseBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57675913/

相关文章:

java - 一个方法是否有可能确定它的返回值是否会被使用?

java - 以正确的顺序获取已注册的过滤器

php - Windows 8 的 Eclipse for PHP 安装错误

spring-boot - Spring Boot可执行文件-主应用程序类的classnotfound错误

html - 如何编写其中包含复杂内容的链接,使其有效且正确

java - Tomcat 负载均衡

spring-boot - 通过 docker 容器拒绝访问本地数据库

java - 如何引用 src/main/resources 文件夹中的 .wsdl 文件?

validation - 嵌套表单对象验证失败,提示缺少 parent_id

java - Servlet 请求和验证