使用 Spring 在 Swagger UI 上收到 404 错误

问题描述 投票:0回答:8

我正在将 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"}
java spring-boot swagger swagger-ui
8个回答
9
投票

我遇到了类似的问题,/swagger-ui.html(或新端点版本/swagger-ui/)返回404,但/v2/api-docs返回有效的json。解决方案是将 swagger 版本从 3.0.0 降级。至 2.9.2.


1
投票

希望这有帮助,请在下面找到我的工作 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();
    }
}

1
投票

如果您使用的版本 > 3,只需使用

/swagger-ui/
而不是
swagger-ui.html


1
投票

我遇到了同样的问题,通过用 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。


0
投票

您的配置类之一中是否有@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/");
}

0
投票

请将以下依赖引入到pom.xml中

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

0
投票

我在使用 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”

注意最后的“/”


0
投票

回答可能为时已晚,但我已经发现缺少什么了。 如果您使用的是 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

© www.soinside.com 2019 - 2024. All rights reserved.