如何从 Swagger UI 中的“架构”部分隐藏某些架构(OpenAPI 3、Spring Boot)

问题描述 投票:0回答:3

我正在使用 Springdoc 来记录我在 Spring Boot 中制作的 REST API。 我需要从 Swagger UI 中的 Schemas 部分隐藏一些模型/架构,这些模型/架构仅在 API 内部使用,因此不需要在 Schemas 部分中显示它们。

这是我试图隐藏的模型之一:

@Getter
@Setter
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table
public class EventRole extends AbstractEntity implements Serializable {
    @Column(nullable = false, length = 25)
    private String descriptor;
}

上面显示的模型的超类:

@Data
@RequiredArgsConstructor
@SuperBuilder
@MappedSuperclass
public abstract class AbstractEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @CreationTimestamp
    @Column(nullable = false, updatable = false)
    private LocalDateTime creationDate;

    @UpdateTimestamp
    @Column(nullable = false)
    private LocalDateTime modificationDate;
}

这些示例中的大部分注释来自 JPA 或 Lombok。 需要明确的是:

AbstractEntity
Schemas 部分中不可见 – 我将其包含在此处以防万一。

到目前为止我已经尝试过:

  • 在我想要隐藏的类上使用
    @Hidden
    注释
  • 在这些课程上使用
    @Schema(hidden = true)
  • SpringDocUtils.getConfig().addAnnotationsToIgnore(EventRole.class, AbstractEntity.class);
    添加到我的 OpenAPI bean 配置中

我还在控制器方法上测试了

@Hidden
,效果很好。
@Schema(hidden = true)
正确隐藏模型属性。不幸的是,它们都没有隐藏整个模型。我是否使用了错误的注释,或者可能有其他原因导致这不起作用?我是 OpenAPI 3.x 和 Springdoc 的新手,很可能我误解了一些东西。

spring-boot rest swagger-ui openapi springdoc
3个回答
3
投票

设置属性值

springdoc.swagger-ui.defaultModelsExpandDepth=-1
application.properties 中,如此处所述。


1
投票

我花了几个小时才找到解决方案

在 Docket 设置中使用

ignoredParameterTypes

这个有效!

Docket()...
.ignoredParameterTypes(ModleName.class)

0
投票

@Schema(隐藏= true) 私有 int id;

© www.soinside.com 2019 - 2024. All rights reserved.