Swagger2配置方式(解决404报错)

Swagger2是一种用于RESTful服务的开源框架,可以帮助我们实现API文档的生成、测试、调试等任务。但在使用过程中,我们可能会遇到“404 Not Found”报错。本文将详细讲解Swagger2的配置方式,以解决此类报错问题。

1. 导入Swagger2依赖

在我们的Spring Boot项目中,需要在pom.xml中添加Swagger2的依赖,如下所示:

<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.9.2</version>
</dependency>
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
</dependency>

2. 配置Swagger2

在配置Swagger2之前,我们需要创建一个Swagger2配置类,用于初始化Swagger2的相关配置。具体代码如下:

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

    private ApiInfo getApiInfo() {
        return new ApiInfoBuilder()
                .title("API文档")
                .description("API接口文档")
                .version("1.0")
                .build();
    }
}

代码中的createRestApi方法用于创建一个Docket对象,核心就是使用select()函数生成的各种API配置。其中apis(RequestHandlerSelectors.basePackage("com.example.controller"))表示扫描该包下的所有Controller,并生成API文档。paths(PathSelectors.any())表示所有的API接口都会被生成文档。

getApiInfo方法用于实例化API文档信息对象ApiInfo。该对象包括了文档的标题、描述和版本等基本信息。

3. 在Controller中添加@Api注解

为了让Swagger2能够自动扫描到我们的API接口,我们需要在所有的Controller中添加@Api注解,如下所示:

@RestController
@RequestMapping("/user")
@Api(tags = "用户管理")
public class UserController {
    @ApiOperation("添加用户")
    @PostMapping("/add")
    public void addUser(@RequestBody User user) {
        // 添加用户代码
    }

    @ApiOperation("删除用户")
    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        // 删除用户代码
    }

    @ApiOperation("更新用户")
    @PutMapping("/{id}")
    public void updateUser(@PathVariable Long id, @RequestBody User user) {
        // 更新用户代码
    }

    @ApiOperation("查询用户")
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        // 查询用户代码
    }
}

代码中的@Api注解用于指定该Controller的标签,方便在Swagger2中显示。@ApiOperation注解用于指定该方法的API文档信息。

4. 运行项目并访问Swagger2页面

最后,我们需要运行项目,访问Swagger2的页面,查看是否能够正常访问API文档。

在浏览器中访问:http://localhost:8080/swagger-ui.html

如果成功访问Swagger2页面,则表示配置成功。

示例1:解决冲突

如果我们在pom.xml中同时引入了Swagger2和Springfox-swagger-ui,可能会发生冲突,导致404报错。在这种情况下,我们需要移除其中一个依赖。

<!-- 移除Springfox-swagger-ui依赖 -->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.9.2</version>
</dependency>
<!--<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
</dependency>-->
<!-- 添加Swagger-ui依赖 -->
<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-ui</artifactId>
  <version>1.5.9</version>
  <exclusions>
    <exclusion>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-core</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-core</artifactId>
  <version>1.5.9</version>
</dependency>

示例2:配置JWT认证

如果我们的API需要使用JWT认证,我们需要在Swagger2配置类中添加相应的配置,如下所示:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(getApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.controller"))
                .paths(PathSelectors.any())
                .build()
                .securitySchemes(Collections.singletonList(apiKey())) // 添加JWT认证
                .securityContexts(Collections.singletonList(securityContext())); // 添加JWT认证
    }

    private ApiInfo getApiInfo() {
        return new ApiInfoBuilder()
                .title("API文档")
                .description("API接口文档")
                .version("1.0")
                .build();
    }

    // 添加JWT认证
    private ApiKey apiKey() {
        return new ApiKey("JWT", HttpHeaders.AUTHORIZATION, In.HEADER.name());
    }

    // 添加JWT认证
    private SecurityContext securityContext() {
        return SecurityContext.builder()
                .securityReferences(Collections.singletonList(new SecurityReference("JWT", new AuthorizationScope[]{})))
                .build();
    }
}

代码中的securitySchemes函数用于添加JWT认证,securityContexts函数用于配置JWT的安全上下文。

结束语

通过以上步骤,我们就可以完善的配置Swagger2,解决404报错问题,并且支持JWT认证等功能。在实际开发中,根据需要添加、修改配置即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Swagger2配置方式(解决404报错) - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 使用windows防火墙时报错0x80070422解决方案

    问题描述: 在使用Windows操作系统自带的防火墙时,可能会遇到如下错误提示信息: Error code: 0x80070422 这个错误是由于Windows Update服务被禁用引起的,从而导致无法打开Windows防火墙。 解决方案: 下面将介绍两种不同的解决方案,供您参考: 解决方案1:启用Windows Update服务 步骤1:按下”Win +…

    http 2023年5月13日
    00
  • Python异步发送日志到远程服务器详情

    以下是关于“Python异步发送日志到远程服务器”的完整攻略: 简介 在Python应用中,我们通常需要记录日志并将其发送到远程服务器进行和分析。如果使用同步方式发送日志,那么可能会影响应用的性能和响应时间。因此,本文将介绍使用异步方式发送日志到远程服务器,并提供两个示例说明。 解决步骤 以下是使用Python异步发送日志到远程服务器的步骤: 步骤一:安装异…

    http 2023年5月13日
    00
  • nestjs搭建HTTP与WebSocket服务详细过程

    以下是关于“nestjs搭建HTTP与WebSocket服务详细过程”的完整攻略: 简介 NestJS是一个基于Node.js的开发框架,它提供了一简单、扩展的方式来构建Web应用程序。本文将介绍如何使用NJS搭建HTTP与WebSocket服务,并提供两个示例说明。 搭建HTTP服务 步骤一:创建NestJS项目 首先,我们需要创建一个NestJS项目。可…

    http 2023年5月13日
    00
  • 微服务框架FEIGN使用常见问题分析

    以下是关于“微服务框架FEIGN使用常见问题分析”的完整攻略: 简介 FEIGN是一种常用的框架,它可以帮助我们快速构建RESTful API。在使用FEIGN时,可能会遇到一些常见问题。本文将介绍些问题及解决方案,并提供两个示例说明。 问题分析 在使用FEIGN时,可能会遇到以下常见问题: 无法解析服务:如果无法解析服务,可能是因为服务名称不正确者服务没有…

    http 2023年5月13日
    00
  • Vue项目服务器部署刷新页面404问题及解决

    当在Vue项目服务器部署时,刷新页面可能会出现404错误。这是由于服务器无法正确处理Vue路由的历史记录模式导致的。以下是详细讲解“Vue项目服务器署刷新页面404问题及解决”的完整攻,包含两个示例说明: 步骤1:服务器 要解决这个问题,我们在服务器上配置,以正确处理Vue路由的历记录模式。以下是两个示例说明: 示例1:Nginx服务器 假设我们使用Ngin…

    http 2023年5月13日
    00
  • 解决docker pull镜像报错的问题

    Docker是一款流行的容器化平台,但是在使用Docker时,可能会遇到docker pull镜像报错的问题。以下是解决该问题的攻略,其中包含两个示例: 解决docker pull像报错的问题 在使用 pull命令拉取镜像时,可能会遇到以下报错: Error response from daemon: Get https://registry-.docker…

    http 2023年5月13日
    00
  • Ubuntu14.04 远程连接Win7 报错:无法连接到RDP服务器

    为解决Ubuntu14.04远程连接Win7报错:无法连接到RDP服务器,我们需要按照以下步骤进行操作: 确认Win7的“允许远程连接”选项 在Win7系统的“控制面板”- “系统和安全”- “系统” 中,进入“远程设置”界面。在“远程控制”中勾选“允许远程办公”,并在“远程协助”部分勾选“允许远程协助计算机”,这会打开远程桌面一个端口,确保Win7能够正常…

    http 2023年5月13日
    00
  • 使用feign发送http请求解析报错的问题

    以下是关于“使用Feign发送HTTP请求解析报错的问题”的完整攻略: 问题描述 在使用Feign发送HTTP请求时,我们可能会遇到解析报错的问题。这个问题通常是由于请求参数不正确导致。以下是一些解决方法。 解决方法 方法一:检查请求参数格式 可以检查请求参数格式是否正确。是一个示例: @FeignClient(name = "example&qu…

    http 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部