我使用 Value.Immutable 类作为其余的 api 请求/响应。生成的 OpenAPI 文档不显示不可变类的属性。看起来 OpenAPI 生成器不理解这些 bean,因为不可变抽象定义中没有 getter 和 setter。
当我使用 Value.Immutable 类时,如何正确生成 OpenAPI 文档?
这是一个简单的例子——
Value.Immutable 类:
@Value.Immutable
@JsonSerialize(as = ImmutableCity.class)
@JsonDeserialize(as = ImmutableCity.class)
@Introspected
@Schema(implementation = ImmutableCity.class, name = "City", description = "City model")
@Value.Style(
passAnnotations = {Schema.class},
visibility = ImplementationVisibility.PUBLIC)
public abstract class City {
@JsonProperty("name")
@NotBlank
public abstract String name();
@JsonProperty("description")
public abstract String description();
}
控制器:
@Controller("/city")
public class CityController {
/**
* Persist a city
* @param city
* @return the persisted city
*/
@Post("save")
@Tag(name = "city")
public HttpResponse<City> save(
@Body City city) {
// persist it...
return HttpResponse.created(city);
}
}
为 City 生成的 OpenAPI 模式没有属性:
components:
schemas:
City:
type: object
description: City model
如果我将 City.java 更改为不使用不可变对象而是使用 getter/setter,则会生成以下属性:
components:
schemas:
City:
type: object
description: City model
properties:
name:
minLength: 1
type: string
description:
type: string