Spring 启动验证,在反序列化 requestBody 时期望字段,但不是来自 responseBody
Spring Boot validation, expect field when deserializing requestBody, but not from responseBody
我想知道 Spring 引导最佳实践。
我有一个 Spring 引导 API,它基本上暴露了另一个 API。
这是一个必要的邪恶。
外部 API 是一场彻底的灾难,我们不能直接将其暴露给我们的客户。
问题是这个 API 有时需要 requestBody 中的字段,
但不会 return 将它们提供给消费者。
将其转换为 Spring 引导(Javax 验证或 Lombok)。
我不能只在这些字段上放置 @Notnull 或 @Nonnull 注释。
因为当 Jackson 试图反序列化 responseBody 时它会失败。
我应该在这里做什么?
- 我应该制作一个单独的 ObjectIn 和 ObjectOut
- 我是否应该删除注释并在 restController 中进行自定义条件检查
- 我应该完全做点别的吗
假设数据在JSON-结构中传输。
使用 @JsonProperty(value = "example_field_name", required = false),将 required 设置为 false,来注释您的 属性。如果 JSON-Structure.
中缺少字段,那么 Jackson 将不会抛出任何错误
如果请求和响应负载不同,用不同的 类 来表示它们可能是有意义的。为了处理将 DTO 映射到域模型(以及相反的方式)的样板代码,您可以查看映射框架,例如 MapStruct,它与 Spring.[=11 集成得很好=]
或者为输入和输出定义不同的类,您可以查看验证组。
我想知道 Spring 引导最佳实践。
我有一个 Spring 引导 API,它基本上暴露了另一个 API。 这是一个必要的邪恶。 外部 API 是一场彻底的灾难,我们不能直接将其暴露给我们的客户。
问题是这个 API 有时需要 requestBody 中的字段, 但不会 return 将它们提供给消费者。
将其转换为 Spring 引导(Javax 验证或 Lombok)。 我不能只在这些字段上放置 @Notnull 或 @Nonnull 注释。 因为当 Jackson 试图反序列化 responseBody 时它会失败。
我应该在这里做什么?
- 我应该制作一个单独的 ObjectIn 和 ObjectOut
- 我是否应该删除注释并在 restController 中进行自定义条件检查
- 我应该完全做点别的吗
假设数据在JSON-结构中传输。
使用 @JsonProperty(value = "example_field_name", required = false),将 required 设置为 false,来注释您的 属性。如果 JSON-Structure.
中缺少字段,那么 Jackson 将不会抛出任何错误如果请求和响应负载不同,用不同的 类 来表示它们可能是有意义的。为了处理将 DTO 映射到域模型(以及相反的方式)的样板代码,您可以查看映射框架,例如 MapStruct,它与 Spring.[=11 集成得很好=]
或者为输入和输出定义不同的类,您可以查看验证组。