我想知道 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/