返回

一劳永逸:Springboot swagger-ui.html报404解决指南

后端

轻松解决 SpringBoot Swagger 404 报错

在 SpringBoot 应用中,集成 Swagger 文档框架是一个常见且有益的做法。然而,一些用户可能会在访问 Swagger UI 时遇到恼人的 404 报错,破坏了调试和文档过程。本文旨在指导读者了解解决此问题的分步指南,确保顺利的 Swagger 体验。

步骤 1:添加 Swagger 依赖

首先,在项目的 pom.xml 文件中添加 Swagger 的 Maven 依赖项:

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

步骤 2:配置 Swagger

在 SpringBoot 应用的启动类上,添加 @EnableSwagger2 注解:

@SpringBootApplication
@EnableSwagger2
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

步骤 3:创建 Docket Bean

创建一个 Docket Bean,用于配置 Swagger 的设置:

@Bean
public Docket createRestApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.controller"))
            .paths(PathSelectors.any())
            .build();
}

步骤 4:配置 API 信息

在 apiInfo() 方法中配置 API 的信息,包括标题、和版本:

private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
            .title("API 文档")
            .description("本 API 文档提供了对系统的所有接口的详细说明")
            .version("1.0")
            .build();
}

步骤 5:启动应用并访问 Swagger UI

启动 SpringBoot 应用后,在浏览器中访问 http://localhost:8080/swagger-ui.html,即可看到 Swagger UI 页面。

解决 404 报错

如果在访问 swagger-ui.html 页面时遇到 404 报错,请检查以下内容:

  • 依赖项是否正确添加: 检查 pom.xml 文件中是否正确添加了 Swagger 依赖项。
  • Docket Bean 是否正确创建: 确保在 SpringBoot 应用中正确创建了 Docket Bean,并且配置了适当的设置。
  • API 信息是否正确配置: 检查 apiInfo() 方法中 API 信息的配置是否正确。
  • SpringBoot 应用是否正确启动: 确保 SpringBoot 应用已正确启动并且正在运行。

通过遵循这些步骤,可以轻松解决 SpringBoot 中 Swagger 的 404 报错问题,从而获得无缝的 API 文档体验。

常见问题解答

1. 我按照步骤操作,但仍然遇到 404 报错。

可能是由于其他配置问题。检查日志文件或调试应用程序以查找根本原因。

2. 我正在使用 SpringBoot 3.0,但 Docket Bean 找不到。

在 SpringBoot 3.0 中,Docket Bean 的名称已更改为 OpenAPI3。

3. Swagger UI 页面加载缓慢。

可能是由于大量 API 端点的存在或网络连接问题。

4. Swagger UI 页面显示 500 内部服务器错误。

检查应用程序日志文件,了解导致错误的根本原因。

5. 如何自定义 Swagger UI 的外观?

可以通过创建自定义主题或使用 Swagger UI Editor 等工具来实现。