0

我使用 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
4

0 回答 0