代码之家  ›  专栏  ›  技术社区  ›  lapots

swagger无法识别api描述

  •  0
  • lapots  · 技术社区  · 6 年前

    我假设 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();
    }
    

    我创建了一组存根端点来模拟 /login /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!

    怎么了?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Serg Vasylchak    6 年前

    如果您想为上面指定的请求映射提供夸张的文档,可以简单地用 .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