我试图在使用 openapi 3 规范设计的 API 中引入可空属性。这个想法是始终将属性返回给客户端,无论它们的值是否为 null。
YAML 文件(我首先尝试没有默认,结果相同):
property:
type: integer
nullable: true
default: null
生成的 Java 代码:
@JsonProperty("property")
private JsonNullable<Integer> property = JsonNullable.undefined();
API 的响应:
"property": {
"present": true
}
因此无论属性是否为 null,结果始终为“present: true”。没有可空性,它工作得很好,除了从响应中删除了不希望的空值。
有什么想法吗?
附言该属性实际上并未命名为“属性”
编辑:配置:
<generateAliasAsModel>true</generateAliasAsModel>
<inputSpec>./api/interface1.yaml</inputSpec>
<generatorName>spring</generatorName>
<enablePostProcessFile>true</enablePostProcessFile>
<configOptions>
<sourceFolder>src/main/java</sourceFolder>
<library>spring-boot</library>
<java8>true</java8>
<interfaceOnly>true</interfaceOnly>
<useOptional>true</useOptional>
</configOptions>
最佳答案
一个属性可以被称为nullable
以在 openApi 中传递 null 值。
OpenApi 生成器使用 JsonNullable 包装数据类型,如下所示。
private JsonNullable<String> firstField = JsonNullable.undefined();
您在问题中提到的答复说该属性存在但不是实际值,当对象未正确序列化时会发生这种情况。只需注册 JsonNullableModule
即可指示如何序列化 jackson 等解析器。
@Bean
public Module jsonNullableModule() {
return new JsonNullableModule();
}
至少在 org.openapitools:jackson-databind-nullable:0.2.1
版本中我没有看到这样的问题,这意味着不需要明确注册上面的内容,因为它是由图书馆本身。
https://stackoverflow.com/questions/60429225/
相关文章:
cassandra - JanusGraph 错误 : "Could not find type f
google-cloud-platform - 使用 GCP AutoML 进行自定义实体提取的预测
c# - 在 Visual Studio 2019 中添加带有 css 类的 div 的键盘快捷方式
python - pandas 将嵌套字典转换为 mutiIndex 行和列
python - "Chrome not reachable"在非 headless 模式下使用 X
reactjs - Auth0 并使用react,将用户重定向到注册页面