首页 > 解决方案 > swagger 无法识别 api 描述

问题描述

docket这样设置

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select()
        .apis(RequestHandlerSelectors.basePackage("com.config.internal"))
        .paths(Predicates.or(PathSelectors.ant("/api**/**")))
        .build();
}

我创建了一组 stub 端点来模仿真实的/loginor /oauth

@Api("Authentication")
@RequestMapping("/api")
public interface LoginEndpointApi {

    @ApiOperation(value = "Github SSO endpoint", notes = "Endpoint for Github SSO authentication")
    @ApiResponses({
        @ApiResponse(code = 200, message = "HTML page of main application")
    })
    @GetMapping("/oauth/github")
    default void oauthGithub() {
        throw new UnsupportedOperationException();
    }

    @ApiOperation(value = "Get CSRF token", notes = "Returns current CSRF token")
    @ApiResponses({
        @ApiResponse(code = 200, message = "CSRF token response", response = String.class,
            examples = @Example({@ExampleProperty(value = "015275eb-293d-4ce9-ba07-ff5e1c348092")}))
    })
    @GetMapping("/csrf-token")
    default void csrfToken() {
        throw new UnsupportedOperationException();
    }

    @ApiOperation(value = "Login endpoint", notes = "Login endpoint for authorization")
    @ApiResponses({
        @ApiResponse(code = 200, message = "Successful authentication")
    })
    @PostMapping("/login")
    default void login(
            @ApiParam(required = true, name = "login", value = "login body")
            @RequestBody LoginRequest loginRequest) {
        throw new UnsupportedOperationException();
    }
}

但它不承认它。com.config.internal它与我描述的位于同一个包中。

但是页面swagger ui是空的,并显示No operations defined in spec!

问题是什么?

标签: spring-bootswaggerspringfox

解决方案


如果您想为上面指定的请求映射提供 swagger 文档,您可以简单地使用.paths(Predicates.or(PathSelectors.ant("/api/**")))路径匹配器来描述它。但是,如果您的路径包含更复杂的内容,api + text without backslash separator那么您应该通过 https://docs.spring.io/spring/docs/3.1.x/javadoc-api/org/springframework/util/AntPathMatcher.html了解


推荐阅读