簡體   English   中英

如何刪除從 OpenAPI Swagger 3.0 規范帶來的默認端點

[英]How to remove default endpoints brought from OpenAPI Swagger 3.0 specification

我有一個 SpringBoot 應用程序,我為其創建了一個 Swagger 實現。 但是,新的 OpenAPI 3.0 規范帶來了一個默認部分,其中包含大量不必要的端點/元數據。 我找不到解決方案來刪除包含所有這些端點的默認部分,這些端點默認添加到我的 REST API 框架的 Swagger 實現中。 有沒有人遇到過這樣的問題?

這些端點來自哪里? 如何刪除它們?

Swagger 打印屏幕中的默認部分

@RequestMapping("/addresses")
@RestController
@PermitAll
@Tag(name="Addresses",description="Addresses API")
public class AddressRest {

    @Autowired
    private AddressesService addressService;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<AddressDTO> findAll() {
        return this.addressService.findAll();
    }

application.yml 文件如下所示。 我嘗試使用 paths-to-exclude 屬性,但它似乎不起作用。 我錯過了什么?

springdoc:
  swagger-ui:
    path: /swagger-ui.html
    query-config-enabled: true
  api-docs:
    path: /api/openapi.json
    enabled: false
  paths-to-exclude:
    - /api/healthcheck

build.gradle 文件包含以下依賴項:

implementation 'org.springdoc:springdoc-openapi-ui:1.6.12'
implementation 'io.swagger.core.v3:swagger-jaxrs2:2.2.6'

我不確定這是否仍然是事實上的標准,但您可以使用OpenApiConfig class(或您用來配置 Swagger 的任何一個 class)中的Docket配置從 Swagger 文檔中排除特定端點。 我在我的一個較舊的項目中發現了這個(並為您的案例修改了路徑):

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select()
        .apis(RequestHandlerSelectors.any())
        .paths(Predicates.not(PathSelectors.regex("/api/.*")))
        .build();
}

這個帶有Predicates.not的正則表達式將排除所有匹配/api/.*.

但我想強調的是,這是用很多舊版本完成的,我不確定這是否仍然有效。 在評論中讓我知道!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM