提问者:小点点

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


我正在Spring Boot中构建一个非常简单的REST服务,请求如下:

    < li >获取/API/资源 < li >发布/API/资源 < li>GET /api/resources/id < li >删除/api/resources/id

但是当我转到 localhost:8080/swagger-ui.html 时,我得到了一个非常长的不存在的冗余endpoint列表,例如:

  • 删除 /api/resources
  • 补丁 /api/resources
  • 头 /api/resources
  • 选项 /api/resources
  • 补丁 /api/resources/id
  • 头 /api/resources/id
  • 选项 /api/resources/id

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

我不能通过annotation @ API operation(value = " XYZ ",hidden = true)隐藏它们,因为这些请求不存在于我的控制器代码中。

这是我的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文档中遇到了404错误,但我认为这不是我的问题,因为斯威格显示了正确的endpoint列表,但也显示了许多不存在的endpoint。虽然我还没有找到404错误的解决方案,但我不知道我是否应该在意。


共2个答案

匿名用户

事实证明,我的控制器代码是问题所在:

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

必须在任何地方指定@RequestMapping方法才能在 Swagger 中获取正确的终结点列表,即使 REST 服务在没有指定这些终结点的情况下工作正常。

匿名用户

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