Spring Boot验证,反序列化requestBody时期望字段

我想知道 Spring Boot 最佳实践。

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

问题在于,此 API 有时需要 requestBody 中的字段,但不会将它们返回给使用者。

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

我应该在这里做什么?

  • 我应该制作一个单独的 ObjectIn 和 ObjectOut

  • 我应该删除注释并在restController 中进行自定义条件检查吗

  • 我应该完全做些别的事情吗


临摹微笑
浏览 147回答 2
2回答

Helenr

如果请求和响应有效负载不同,则使用不同的类来表示它们可能是有意义的。为了处理将 DTO 映射到域模型(以及其他方式)的样板代码,您可以查看映射框架,例如MapStruct,它与 Spring 集成得很好。除了为输入和输出定义不同的类之外,您还可以研究验证组。

桃花长相依

假设数据以 JSON 结构传输。使用 @JsonProperty(value = "example_field_name", required = false),将 required 设置为 false,来注释您的属性。如果 JSON 结构中缺少字段,Jackson 将不会抛出任何错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java