规范中没有定义任何操作!在 swagger ui 和 springfox 中指定多个路径时

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

我想在 Swagger ui 中显示两个 REST API 端点:/cart 和 /post。

当我指定 /cart 或 /post 工作正常,但两者都显示错误为

规范中没有定义任何操作!

在 swagger-ui 中

@Bean
public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
        .select()
        .apis(RequestHandlerSelectors.any())
        .paths(PathSelectors.ant("/cart"))
        .paths(PathSelectors.ant("/post"))
        .build();
}
java swagger swagger-ui springfox
6个回答
4
投票

另一种选择是使用 .paths(PathSelectors.any()) 而不是 .paths(PathSelectors.ant("/cart")).paths(PathSelectors.ant("/帖子”))


1
投票

使用 Spring boot

2.6.x
,您还需要:

spring:  
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

0
投票

因为你使用了

AND
条件

  public ApiSelectorBuilder paths(Predicate<String> selector) {
    pathSelector = pathSelector.and(selector);
    return this;
  }

您可以使用

OR
子句来组合条件

.paths(PathSelectors.ant("/cart").or(PathSelectors.ant("/post")))

0
投票

请将包 xxxx 添加为根包,以便它可以扫描所有类中的 swagger 配置

public String getApplicationBasePath() {
                    return swaggerPath;
                }
            }).select().apis(RequestHandlerSelectors.basePackage("xxxx")).build()
                    .securitySchemes(Arrays.asList(securitySchema()))
                    .securityContexts(Collections.singletonList(securityContext())).apiInfo(metaData());

0
投票

这就是解决方案:添加控制器类所在的路径

示例: “org.zaid.aitfriha.controller.api”是您拥有控制器的路径

.apis(RequestHandlerSelectors.basePackage("org.zaid.aitfriha.controller.api"))

不要使用 org.zaid.* 或 org.zaid.aitfriha.* 或 org.zaid.aitfriha.controller.*

小心“/api/AbsenceRequest”不起作用,它必须是“/api/absenceRequest”

@RestController
@RequestMapping("/api/absenceRequest")
@CrossOrigin("*")

0
投票

您可以尝试将基础包设置为 Swagger Config 类中的 RequestHandlerSelectors 对象。您可以指向添加了 OpenAPI 注释的特定包,即“控制器”,或者只是将其指向根,spring 将扫描所有嵌套的包。

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.demo"))
            .paths(PathSelectors.any())
            .build().apiInfo(apiInfoMetaData());
}
© www.soinside.com 2019 - 2024. All rights reserved.