我试图在使用openapi 3规范设计的API中引入可为null的属性。其思想是始终将属性返回给客户端,无论其值是否为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”。如果没有nullability,它就可以正常工作,除了从响应中删除不需要的null值。
有什么想法吗?
P、 该物业实际上并未命名为“物业”
编辑:配置:
<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>
由于@maniganda prakash的帮助,我能够通过在自定义的对象映射器中注册模块来解决我的问题,该映射器由RestTemplate使用。
类似这样:
java prettyprint-override">var objectMapper = new ObjectMapper().registerModule(new JsonNullableModule());
var httpMessageConverter = new MappingJackson2HttpMessageConverter(objectMapper);
var restTemplate = RestTemplateBuilder.restTemplate().build();
restTemplate.getMessageConverters().add(0, httpMessageConverter);
可以将属性称为nullable
以在openApi中传递空值。OpenApi生成器使用JsonNullable包装数据类型,如下所示。
private JsonNullable<String> firstField = JsonNullable.undefined();
您在问题中提到的回答是,属性存在,但不是真正的值,当对象未正确序列化时会发生这种情况。只需注册JsonNullableModule,就可以指导如何序列化jackson等解析器。
@Bean
public Module jsonNullableModule() {
return new JsonNullableModule();
}
至少在版本<代码>组织中。openapitools:jackson-databind-nullable:0.2.1我没有看到这样的问题,这意味着不需要显式注册上述内容,因为它是由库本身负责的。
我目前正在使用openapi生成器maven插件生成一个模型,但当该模型创建BigDecimal属性时,它没有添加正确的导入。例如: 当我手动添加导入时,模型编译成功,但我认为它会生成。 我尝试在配置部分添加导入映射,如下所示: 正如这里所建议的那样。 还尝试了以下方法: 但行为是一样的。 我正在使用openapi生成器版本5.0.0。我目前的配置是这样的:
我已经创建了我的。yml(减少): 我让生成Vertx的java类 类型为的属性按预期生成,但所有引用为的属性均按JsonNullable生成 我复制了生成的类并修复了泛型,以便映射器将值读取到预期的类。你知道怎么写这个吗。生成器创建的yml
我在openapi v.3规范中有一个模型。我使用openapi生成器maven插件为库webclient(spring 5-webflux)生成java客户端。我想发送回客户端文件和http头。生成的代码没有获取响应标头的方法。 为客户端生成的代码不包含提供对响应头访问的代码。例如,如果我使用库resttemplate,则有一个方法public MultiValueMap getResponse
不幸的是,SpringFox还不支持OpenAPI3,而且,当我只想将最初的yaml公开为JSON时,使用基于反射的生成器似乎毫无意义。
我从一个openapi规范(3.0.1)设计开始,用openapi生成器maven-plugin(5.1.0)生成代码,然后我使用springdoc-openapi-ui进行Spring引导(2.5.4)。 我需要手动将生成的代码中的大部分注释从io.swagger.annotations.*迁移到io.swagger.v3.oas.annotations.*https://springdoc.o
我只是将代码从swagger代码生成器迁移到open api代码生成器。我通过maven插件使用生成器。我需要它为一个外部API(在我的控制之外)生成一个客户端,这里给出了使用的swagger文件。 我的插件设置如下: 为了有一个最小的例子,我把昂首阔步的来源去掉了: 当生成器运行正常时,代码无效 结果列表«GenericRow»完全错误。 另一方面,类的名称是正确生成的只有变量名称处理错误。 如