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

Paw*_*lis 10 rest swagger-ui spring-boot openapi springdoc

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

\n

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

\n
@Getter\n@Setter\n@EqualsAndHashCode(callSuper = true)\n@AllArgsConstructor\n@NoArgsConstructor\n@Entity\n@Table\npublic class EventRole extends AbstractEntity implements Serializable {\n    @Column(nullable = false, length = 25)\n    private String descriptor;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

上面显示的模型的超类:

\n
@Data\n@RequiredArgsConstructor\n@SuperBuilder\n@MappedSuperclass\npublic abstract class AbstractEntity {\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n\n    @CreationTimestamp\n    @Column(nullable = false, updatable = false)\n    private LocalDateTime creationDate;\n\n    @UpdateTimestamp\n    @Column(nullable = false)\n    private LocalDateTime modificationDate;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这些示例中的大多数注释都来自 JPA 或 Lombok。\n需要明确的是:在模式AbstractEntity部分 \xe2\x80\x93中不可见,我将其包含在此处以防万一。

\n

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

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

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

\n

W K*_*nny 1

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

ignoredParameterTypes在 Docket 设置中使用

这个有效!

Docket()...
.ignoredParameterTypes(ModleName.class)
Run Code Online (Sandbox Code Playgroud)

  • 这不是Springfox的吗?我认为 OP 正在寻求 Springdoc 解决方案。 (3认同)