我正在将 swagger UI 与 Spring boot 应用程序集成。当我点击 swagger-ui.html 时。我收到 404 错误。我的配置类如下:
@Configuration
@EnableSwagger2
//@Import(SwaggerConfiguration.class)
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
...
错误信息:
{"status":404,"message":"HTTP 404 Not Found","link":"https://jersey.java.net/apidocs/2.8/jersey/javax/ws/rs/NotFoundException.html"}
我遇到了类似的问题,/swagger-ui.html(或新端点版本/swagger-ui/)返回404,但/v2/api-docs返回有效的json。解决方案是将 swagger 版本从 3.0.0 降级。至 2.9.2.
希望这有帮助,请在下面找到我的工作 swagger 配置:
@Configuration
@EnableSwagger2
@Profile({"!production"})
public class SwaggerConfiguration extends WebMvcConfigurerAdapter {
@Autowired
private ServletContext servletContext;
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.host("localhost")
.directModelSubstitute(LocalDate.class, Date.class)
.pathProvider(new RelativePathProvider(servletContext) {
@Override
public String getApplicationBasePath() {
return "/";
}
})
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
如果您使用的版本 > 3,只需使用
/swagger-ui/
而不是 swagger-ui.html
我遇到了同样的问题,通过用 springfox-boot-starter:3.0.0 替换 springfox-swagger2 和 springfox-swagger-ui 依赖项并删除 @EnableSwagger2 注释来修复它。请注意,Swagger url 也从 http://localhost:8080/swagger-ui.html 更改为 http://localhost:8080/swagger-ui/index.html。
您的配置类之一中是否有@EnableWebMvc?如果是这样,您将必须手动进行资源配置,如下所示:
@Override
public void addResourceHandlers (ResourceHandlerRegistry registry) {
registry.addResourceHandler("/swagger-ui.html**")
.addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");
registry.
addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
请将以下依赖引入到pom.xml中
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
我在使用 springfox-boot-starter:3.0.0 的 spring-boot 中遇到了几乎类似的问题,其中 swagger UI 会显示为空,并查看它抛出的控制台 404
http://{ip}:{port}/custom/url/swagger-ui/index.html/swagger-ui-bundle.js?v=3.0.0 net::ERR_ABORTED 404
错误是我在文档 URL 末尾添加的“/”
我正在写 “http://{ip}:{port}/custom/url/swagger-ui/index.html/”
而不是
“http://{ip}:{port}/custom/url/swagger-ui/index.html”
注意最后的“/”
回答可能为时已晚,但我已经发现缺少什么了。 如果您使用的是 Springdoc web-ui 和 SpringBoot 3.2.0,则需要添加此依赖
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator-core</artifactId>
</dependency>
参考这个github问题:https://github.com/springdoc/springdoc-openapi/issues/2204