我正在Spring Boot中构建一个非常简单的REST服务,请求如下:
但是当我转到 localhost:8080/swagger-ui.html 时,我得到了一个非常长的不存在的冗余endpoint列表,例如:
那么,如何摆脱它们呢?我已经寻找了一个答案,我只找到了如何将响应列表限制在特定路径上,这不是我的问题。
我不能通过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错误的解决方案,但我不知道我是否应该在意。
事实证明,我的控制器代码是问题所在:
//@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