在 Swagger 文档中排除子类架构

Excluding child class schema in Swagger documentation

提问人:Padmasankha 提问时间:11/16/2023 更新时间:11/16/2023 访问量:12

问:

我正在使用 Java 中的 Swagger/OpenAPI 注释来记录我的 API,并且我有一个场景,我想从生成的 Swagger 文档中的子类中排除架构。下面是我的类的简化示例:

@Schema(allOf = {
    Student.class,
    Teacher.class
})
public abstract class Person {

  @Schema(description = "Personal Number", example = "00000000-0000")
  private String ssn;

  protected Person() {
  }

  public Person(final String ssn) {
    this.ssn = ssn;
  }

  public void setSsn(final String ssn) {
    this.ssn = ssn;
  }
}
public class Student extends Person {

  @Schema(description = "Student name", example = "Alex")
  private String name;

  private Student() {
  }

  public Student(String ssn, String name) {
    super(ssn);
    this.name = name;
  }

  public String getName() {
    return name;
  }
}
public class Teacher extends Person {

  @Schema(description = "Working place", example = "Gov. School")
  private String school;

  private Teacher() {
  }

  public Teacher(final String ssn, final String school) {
    super(ssn);
    this.school = school;
  }

  public String getSchool() {
    return school;
  }
}

API 请求端点:

@Controller("/person")
public class PersonEndPoint {

  @Post
  public HttpResponse<Void> insertPerson(
      @Body final Person personRequest) {
    return HttpResponse.accepted();
  }

}

这是使用 swagger 3 的 micronaut 服务。我需要从 swagger 文档中隐藏下面的架构。enter image description here

尽管在 Student 类中使用,但子类仍出现在 Swagger 文档中。有没有办法实现这种排除,或者有没有我可以考虑的替代方法?@Schema(hidden = true)

java swagger micronaut swagger-3.0

评论


答: 暂无答案