当前位置:

首页 > 编程开发 > SpringBoot整合Swagger的方法是什么

SpringBoot整合Swagger的方法是什么

SpringBoot是一个基于Spring框架的轻量级开源框架,它的出现极大地简化了Spring应用的搭建和开发。在开发过程中,接口文档是非常重要的一环,它不仅方便开发者查看和理解接口的功能和参数,还能帮助前后端开发协同工作,提高开发效率。一、关于SwaggerSwagger是一个RESTful接口文档的规范和工具集,它的目标是统一RESTful接口文档的格式和规范。在开发过程中,接口文档是非常重要的一环,它不仅方便开发者查看和理解接口的功能和参数,还能帮助前后端开发协同工作,提高开发效率。在Spring

本文目录

      Spring Boot 是一个基于 Spring 框架的轻量级开源框架,它的出现极大地简化了 Spring 应用的搭建和开发。在开发过程中,接口文档是非常重要的一环,它不仅方便开发者查看和理解接口的功能和参数,还能帮助前后端开发协同工作,提高开发效率。

      一、关于 Swagger

      Swagger 是一个 RESTful 接口文档的规范和工具集,它的目标是统一 RESTful 接口文档的格式和规范。在开发过程中,接口文档是非常重要的一环,它不仅方便开发者查看和理解接口的功能和参数,还能帮助前后端开发协同工作,提高开发效率。在 Spring Boot 中,我们可以通过集成 Swagger 来实现接口文档的自动生成。Swagger 通过注解来描述接口,然后根据这些注解自动生成接口文档。

      二、Swagger 的安装

      1、下载 Swagger

      Swagger 的官方网站是 https://swagger.io/,我们可以在这里下载最新版本的 Swagger。

      2、安装 Swagger

      安装 Swagger 非常简单,只需要将下载的 Swagger 解压到指定目录即可。在解压后的目录中,我们可以找到 swagger-ui.html 页面,这个页面就是 Swagger 的 UI 界面。

      三、Swagger 的使用

      1、编写接口

      在编写接口时,我们需要使用 Swagger 的注解来描述接口信息。常用的注解包括:

      • @Api:用于描述接口的类或接口

      • @ApiOperation:用于描述接口的方法

      • @ApiParam:用于描述接口的参数

      • @ApiModel:用于描述数据模型

      • @ApiModelProperty:用于描述数据模型的属性

      例如,我们编写一个简单的接口:

      @RestController
      @Api(tags = "用户接口")
      public class UserController {
       
          @GetMapping("/user/{id}")
          @ApiOperation(value = "根据 ID 获取用户信息")
          public User getUserById(@ApiParam(value = "用户 ID", required = true) @PathVariable Long id) {
              // 根据 ID 查询用户信息
          }
      }

      在上面的代码中,@Api表示该类是一个用户接口,@ApiOperation 表示该方法是获取用户信息的接口,@ApiParam 表示该参数是用户 ID,@PathVariable 表示该参数是路径参数。

      2、启用 Swagger

      在 Spring Boot 中,我们可以通过添加 Swagger 相关的依赖来启用 Swagger。
      我们可以在 pom.xml 文件中添加以下依赖:

      
          io.springfox
          springfox-swagger2
          2.9.2
      
      
          io.springfox
          springfox-swagger-ui
          2.9.2
      

      在 Spring Boot 中,我们还需要添加配置类来配置 Swagger。配置类的代码如下:

      @Configuration
      @EnableSwagger2
      public class SwaggerConfig {
       
          @Bean
          public Docket api() {
              return new Docket(DocumentationType.SWAGGER_2)
                      .select()
                      .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                      .paths(PathSelectors.any())
                      .build()
                      .apiInfo(apiInfo());
          }
       
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                      .title("接口文档")
                      .description("接口文档")
                      .version("1.0.0")
                      .build();
          }
      }

      在上面的代码中,@Configuration 表示该类是一个配置类,@EnableSwagger2 表示启用 Swagger。在 api() 方法中,我们通过 `select() 方法配置扫描的包路径,paths() 方法配置接口的访问路径,apiInfo() 方法配置接口文档的相关信息。

      3、查看接口文档

      启动 Spring Boot 应用后,我们可以在浏览器中访问 http://localhost:8080/swagger-ui.html 来查看接口文档。在 Swagger UI 页面中,我们可以看到所有的接口信息,包括接口名称、请求方式、请求路径、请求参数、响应参数等。

      四、Swagger 的高级使用

      1、描述数据模型

      我们可以使用 @ApiModel 和 @ApiModelProperty 注解来描述数据模型和属性。例如,我们可以编写一个 User 类,并在类上使用 @ApiModel 和

      @ApiModelProperty 注解来描述该数据模型:
      
      @ApiModel(description = "用户信息")
      public class User {
       
          @ApiModelProperty(value = "用户 ID", example ="1") 
          private Long id;
      
      	@ApiModelProperty(value = "用户名", example = "张三")
      	private String username;
      
      	@ApiModelProperty(value = "密码", example = "123456")
      	private String password;
      
      	// 省略 getter 和 setter 方法
      }

      在上面的代码中,@ApiModel 表示该类是一个数据模型,@ApiModelProperty 表示该属性是数据模型的一个属性,value 属性表示属性的描述,example 属性表示属性的示例值。

      2、描述枚举类型

      我们可以使用 @ApiModel 和 @ApiModelProperty 注解来描述枚举类型。例如,我们可以编写一个 Gender 枚举类型,并在枚举值上使用 @ApiModelProperty 注解来描述该枚举值:

      @ApiModel(description = "性别") public enum Gender {
      
      @ApiModelProperty(value = "男")
      MALE,
      
      @ApiModelProperty(value = "女")
      FEMALE;
      }

      在上面的代码中,@ApiModel 表示该枚举类型是一个描述性别的枚举类型,@ApiModelProperty 表示该枚举值是描述男性的枚举值或描述女性的枚举值。

      3、描述响应参数

      我们可以使用 @ApiResponses 和 @ApiResponse 注解来描述接口的响应参数。例如,我们可以编写一个 getUserById() 方法,并在方法上使用 @ApiResponses 和 @ApiResponse 注解来描述该方法的响应参数:

      @GetMapping("/user/{id}")
      @ApiOperation(value = "根据 ID 获取用户信息") 
      @ApiResponses({ @ApiResponse(code = 200, message = "请求成功", response = User.class), 
      @ApiResponse(code = 404, message = "用户不存在") }) 
      public User getUserById(@ApiParam(value = "用户 ID", required = true) @PathVariable Long id) 
      { 
      	// 根据 ID 查询用户信息 
      }

      在上面的代码中,@ApiResponses 表示该方法的响应参数,@ApiResponse 表示该响应参数的描述,code 属性表示响应码,message 属性表示响应消息,response 属性表示响应的数据模型。

      五、Swagger 的进阶使用

      1、配置全局参数

      我们可以在配置类中使用 globalOperationParameters() 方法来配置全局参数。例如,我们可以配置一个全局的 Authorization 参数,用于授权:

      @Configuration
      @EnableSwagger2
      public class SwaggerConfig {
       
          @Bean
          public Docket api() {
              return new Docket(DocumentationType.SWAGGER_2)
                      .select()
                      .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                      .paths(PathSelectors.any())
                      .build()
                      .globalOperationParameters(Arrays.asList(
                              new ParameterBuilder()
                                      .name("Authorization")
                                      .description("授权")
                                      .modelRef(new ModelRef("string"))
                                      .parameterType("header")
                                      .required(false)
                                      .build()
                      ))
                      .apiInfo(apiInfo());
          }
       
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                      .title("接口文档")
                      .description("接口文档")
                      .version("1.0.0")
                      .build();
          }
       
      }

      在上面的代码中,我们通过 globalOperationParameters() 方法来配置一个全局的 Authorization 参数,用于授权。

      2、配置安全协议

      我们可以在配置类中使用 securitySchemes() 方法来配置安全协议。例如,我们可以配置一个 Bearer Token 安全协议:

      @Configuration
      @EnableSwagger2
      public class SwaggerConfig {
       
          @Bean
          public Docket api() {
              return new Docket(DocumentationType.SWAGGER_2)
                      .select()
                      .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                      .paths(PathSelectors.any())
                      .build()
                      .securitySchemes(Arrays.asList(
                              new ApiKey("Bearer", "Authorization", "header")
                      ))
                      .apiInfo(apiInfo());
          }
       
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                      .title("接口文档")
                      .description("接口文档")
                      .version("1.0.0")
                      .build();
          }
       
      }

      在上面的代码中,我们通过 securitySchemes() 方法来配置一个 Bearer Token 安全协议。

      3、配置安全上下文

      我们可以在配置类中使用 securityContexts() 方法来配置安全上下文。例如,我们可以配置一个安全上下文,用于在 Swagger UI 中显示认证按钮:

      @Configuration
      @EnableSwagger2
      public class SwaggerConfig {
       
          @Bean
          public Docket api() {
              return new Docket(DocumentationType.SWAGGER_2)
                      .select()
                      .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                      .paths(PathSelectors.any())
                      .build()
                      .securitySchemes(Arrays.asList(
                              new ApiKey("Bearer", "Authorization", "header")
                      ))
                      .securityContexts(Collections.singletonList(
                              SecurityContext.builder()
                                      .securityReferences(Collections.singletonList(
                                              new SecurityReference("Bearer", new AuthorizationScope[0])
                                      ))
                                      .build()
                      ))
                      .apiInfo(apiInfo());
          }
       
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                      .title("接口文档")
                      .description("接口文档")
                      .version("1.0.0")
                      .build();
          }
       
      }

      在上面的代码中,我们通过 securityContexts() 方法来配置一个安全上下文,用于在 Swagger UI 中显示认证按钮。

      4、配置忽略参数

      在接口中,有些参数可能是敏感信息,我们不希望在接口文档中显示。我们可以使用 @ApiIgnore 注解来忽略这些参数。例如,我们可以在 User 类中使用 @ApiIgnore 注解来忽略密码参数:

      @ApiModel(description = "用户信息")
      public class User {
       
          @ApiModelProperty(value = "用户 ID", example = "1")
          private Long id;
       
          @ApiModelProperty(value = "用户名", example = "张三")
          private String username;
       
          @ApiModelProperty(hidden = true)
          @ApiIgnore
          private String password;
       
          // 省略 getter 和 setter 方法
      }

      在上面的代码中,@ApiModelProperty(hidden = true) 表示该参数是隐藏的,@ApiIgnore 表示忽略该参数。

      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发
      相关文章 更多
      springBoot项目常用目录有哪些
      springBoot项目常用目录有哪些

      springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

      使用 JAX-RS 和 Swagger 创建 RESTful API 的详细文档
      使用 JAX-RS 和 Swagger 创建 RESTful API 的详细文档

      RESTfulapi是一种基于Http的架构风格,它为分布式系统中的资源交互提供了统一的方式。为了便于开发人员使用和维护,为RESTfulAPI提供全面且可访问的文档非常重要。JAX-RS是一种JavaAPI,用于开发RESTfulWEB服务。它提供了丰富的注释和注解,简化了端点的定义和请求处理。swagger是一种流行的开源工具,用于生成RESTfulAPI的交互式文档。通过结合JAX-RS和Swagger,我们可以为我们的API提供高级文档,包括以下好处:自动化文档生成:Swagger使用JAX-RS

      自动生成API文档:使用Swagger在Beego中的实现方法
      自动生成API文档:使用Swagger在Beego中的实现方法

      在Beego中使用Swagger实现API文档自动生成随着互联网技术的日益成熟,越来越多的企业开始将自己的业务模型进行数字化转型,而API作为数字化转型的重要组成部分,也变得越来越重要。在开发API时候,除了保证API的安全和可靠性外,如何让其他前后端开发工程师更快地了解和使用自己开发的API,也是非常重要的一环。本文将介绍如何在使用Beego框架开发API

      编写基于RESTful API的API文档:PHP中使用Swagger规范的方法
      编写基于RESTful API的API文档:PHP中使用Swagger规范的方法

      在现代web应用程序中,RESTfulAPI是互联网应用程序的重要组成部分。RESTfulAPI是一种基于HTTP协议的架构风格,它允许客户端通过HTTP请求访问服务器上的资源。为了让应用更加易于使用,需要编写API文档。这篇文章将介绍如何使用Swagger规范编写基于RESTfulAPI的API文档。Swagger是一种流行的API规范,它允许开发人

      解析SpringBoot和SpringMVC之间的异同
      解析SpringBoot和SpringMVC之间的异同

      解析SpringBoot和SpringMVC之间的异同SpringBoot和SpringMVC是Java领域中非常重要的开发框架。虽然它们都属于Spring框架的一部分,但是在使用和功能上有一些明显的区别。本文将对SpringBoot和SpringMVC进行比较,解析它们之间的异同。首先,让我们来了解一下SpringBoot。SpringBo

      探索SpringCloud和SpringBoot在微服务领域的不同应用方式
      探索SpringCloud和SpringBoot在微服务领域的不同应用方式

      近年来,随着云计算和分布式架构的兴起,微服务架构的应用越来越广泛。而SpringCloud和SpringBoot作为Java开发中的两个重要框架,对于微服务的实现起到了重要的作用。然而,很多人对于它们在微服务领域的不同应用方式还存在一定的疑惑。本文将从不同的角度探索SpringCloud和SpringBoot在微服务中的应用方式。首先,我们来了解一下Spri

      SpringBoot和SpringMVC有何区别?
      SpringBoot和SpringMVC有何区别?

      SpringBoot与SpringMVC的不同之处在哪里?SpringBoot和SpringMVC是两个非常流行的Java开发框架,用于构建Web应用程序。尽管它们经常分别被使用,但它们之间的不同之处也是很明显的。首先,SpringBoot可以被看作是一个Spring框架的扩展或者增强版。它旨在简化Spring应用程序的初始化和配置过程,以帮助开发人

      比较SpringBoot和SpringMVC的异同
      比较SpringBoot和SpringMVC的异同

      SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

      SpringBoot与SpringMVC的不同点是什么?
      SpringBoot与SpringMVC的不同点是什么?

      SpringBoot和SpringMVC是Java开发中常用的两个框架,它们都是由Spring框架所提供的,但在功能和使用方式上有着一些区别。本文将分别介绍SpringBoot和SpringMVC的特点和区别。一、SpringBoot的特点:简化配置:SpringBoot通过约定优于配置的原则,大大简化了项目的配置过程。它可以自动配置项目所需要的参数,开发人

      比较和选择指南:SpringCloud与SpringBoot的功能比较
      比较和选择指南:SpringCloud与SpringBoot的功能比较

      SpringCloud和SpringBoot是目前Java领域中最热门的开源框架,它们分别提供了一套完善的微服务架构和快速构建应用程序的解决方案。本文将对它们的功能进行比较,并给出选择指南,以帮助读者了解它们的优势和适用场景。SpringBoot是一个用于开发Java应用程序的框架,它提供了一个简化的开发流程,集成了大量常用的功能和组件,减少了开发者的工作量

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。