Swagger显示不存在的端点。如何摆脱它们?

时间:2017-07-17 10:17:24

标签: java spring-boot swagger

我在Spring Boot中使用这样的请求构建一个非常简单的REST服务:

  • GET / api / resources
  • POST / api / resources
  • GET / api / resources / id
  • DELETE / api / resources / id

但是当我去 localhost:8080 / swagger-ui.html 时,我会得到一个很长的不存在的冗余端点列表,例如:

  • DELETE / api / resources
  • PATCH / api / resources
  • HEAD / api / resources
  • OPTIONS / api / resources
  • PATCH / api / resources / id
  • HEAD / api / resources / id
  • OPTIONS / api / resources / id

那么,如何摆脱它们?我已经找到了答案,我只知道如何将响应列表限制在特定路径,这不是我的问题。

我无法通过注释@ApiOperation(值=" xyz",hidden = true)隐藏它们,因为这些请求不存在于我的Controller代码中。

这是我的 SwaggerConfig.java 类:

@Configuration
@EnableSwagger2
class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(regex("/api.*"))
                .build();
    }
}
顺便说一句,显然我在/ v2 / api-docs上出现404错误,但我不认为这是我的问题,因为Swagger显示正确的端点列表,但也有很多不是 - 现有的。虽然我还没有找到404错误的解决方案,但我不知道我是否应该关心。

2 个答案:

答案 0 :(得分:1)

原来,我的Controller代码就是问题:

 //@RequestMapping("/resource/{id}")
 @RequestMapping(value = "/resource/{id}", method = RequestMethod.GET)

必须在所有地方指定@RequestMapping中的方法才能在Swagger中获取正确的端点列表,即使REST服务工作正常而有时也没有指定。

答案 1 :(得分:1)

是的,或者您使用@GetMapping(显然是GET方法)或@PostMapping用于POST,而无需指定方法。 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/GetMapping.html