当前位置: 首页 > news >正文

SpringBoot——整合Swagger

目录

 Swagger

 Swagger工具集

Swagger注解

项目总结

新建SpringBoot项目

pom.xml

Swagger2Config配置类

User实体类

UserController控制器

项目测试

添加用户

修改用户

查询用户

删除用户


 

 Swagger

  • Swagger是一款基于RESTful接口的用于文档在线自动生成和功能测试的开发工具
  • 为了减少前后端开发人员在开发期间的频繁沟通,可以使用Swagger提供的接口文档和线上接口进行前后端功能联调(前端代码和后端代码可以独立开发,后端开发人员不必立即理解前端代码的实现细节
  • Swagger工具的功能:
    • 辅助接口设计
    • 辅助接口开发
    • 生成接口文档
    • 进行接口测试
    • Mock接口
    • 接口管理
    • 接口检测
  • Swagger可以整合到SpringBoot项目中并生成RESTful API文档,减少了开发者创建文档的工作量,同时将接口的说明内容整合在Java代码中,让维护文档和修改代码合为一体,可以让开发者在修改代码逻辑的同时方便地修改文档说明

 Swagger工具集

  • Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger1.2文档转换成Swagger2.0文档等功能。
  • Swagger-core:用于Java/Scala的Swagger实现。与JAX-RS(Jersey、Resteasy、CXF…)、Servlets和Play框架进行集成。
  • Swagger-js:用于JavaScript的Swagger实现。
  • Swagger-node-express:Swagger模块,用于node.js的Express web应用框架。
  • Swagger-ui:一个无依赖的HTML、JS和CSS集合,可以为Swagger兼容API动态生成优雅文档。
  • Swagger-codegen:一个模板驱动引擎,通过分析用户Swagger资源声明以各种语言生成客户端代码

Swagger注解

  • @Configuration:表明这是一个配置类
  • @EnableSwagger2:开启Swagger2
  • @Api:放在类上,描述一个类的基本信息。
  • @ApiOperation:放在方法上,描述一个方法的基本信息
    • value:对方法作用的一个简短描述
    • notes:用来备注该方法的详细作用
  • @ApiImplicitParams:用在方法上,包含一组参数说明
  • @ApiImplicitParam:用来注解来给方法入参增加说明,一个请求能数
    • paramType:指方法参数的类型,可选值如下 
      • path,参数获取方式:@PathVariable
      • query,参数获取方式:@RequestParam
      • header,参数获取方式:@RequestHeader
      • body
      • form
    • name:参数名称,和参数变量相对应
    • value:参数的描述信息
    • required:该字段是否必填
    • defaultValue:该字段的默认值 
  • @ApiResponses:用于表示一组响应。
  • @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
    • code:响应码
    • message:描述信息,例如“请求参数没填好”
    • response:抛出异常的类
  • @ApiModel:用对象来接收参数,描述一个Model的信息(一般用于在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
  • @ApiModelProperty:用对象接收参数时,描述对象的一个字段
  • @ApiIgnore:不对某个接口生成文档
  • @ApiError :发生错误返回的信息

 


 

项目总结

SpringBoot整合Swagger:

  1. 引入pom的相关依赖
  2. 在代码中加入相应的配置,新建config包,写入swaggerConfig配置类
  3. 在basePackage指定的路径下使用swagger(使用api注解,编写控制器类)
  4. 启动项目,浏览器打开http://ip:port/swagger-ui.html进行测试

新建SpringBoot项目

 项目结构:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.study</groupId><artifactId>springboot_swagger</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot_swagger</name><description>Demo project for Spring Boot</description><properties><java.version>8</java.version></properties><dependencies><!--swagger--><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><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

Swagger2Config配置类

package com.study.springboot_swagger.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2 //启用Swagger API文档
public class Swagger2Config {/*** 返回实例Docket(Swagger API摘要)* 在方法中指定扫描的控制器包路径,* 只有在此路径下的Controller类才会自动生成Swagger API文档* @return*/@Beanpublic Docket api(){return new Docket(DocumentationType.SWAGGER_2)  // 指定 Swagger 的版本为 2.apiInfo(apiInfo())  // 设定 API 文档的基本信息.select()  // 进入 API 选择模式.apis(RequestHandlerSelectors.basePackage("com.study.springboot_swagger.controller"))  // 指定扫描的包路径,Swagger 将扫描该包下的所有 Controller 类.paths(PathSelectors.any())  // 指定要包含的路径,PathSelectors.any() 表示包括所有路径.build();  // 完成 Docket 实例的构建}/*** 配置一些基本的显示信息,* 比如标题,描述,版本,服务条款,联系方式等* @return*/private ApiInfo apiInfo(){return new ApiInfoBuilder().title("swagger-api文档").description("swagger 文档 by liufu").version("1.0").build();}
}

User实体类

package com.study.springboot_swagger.entity;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;@ApiModel(value = "用户实体类", description = "用户信息描述类")
@Data //getter,setter方法
public class User{@ApiModelProperty(value = "用户名")private String username;@ApiModelProperty(value = "用户地址")private String address;
}

UserController控制器

package com.study.springboot_swagger.controller;import com.study.springboot_swagger.entity.User;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;@RestController
@Api(tags = "用户数据接口")
public class UserController {@ApiOperation(value = "查询用户", notes = "根据id查询用户")@ApiImplicitParam(paramType = "path", name = "id", value = "用户id", required = true)@GetMapping("/user/{id}")public String getUserById(@PathVariable Integer id){return "/user/"+id;}@ApiResponses({@ApiResponse(code = 200, message = "删除成功!"),@ApiResponse(code = 500, message = "删除失败!")})@ApiOperation(value = "删除用户", notes = "通过id删除用户")@DeleteMapping("/user/{id}")public Integer deleteUserById(@PathVariable Integer id){return id;}@ApiOperation(value = "添加用户", notes = "添加一个用户,传入用户名和地址")@ApiImplicitParams({@ApiImplicitParam(paramType = "query", name = "username", value = "用户名", required = true, defaultValue = "sang"),@ApiImplicitParam(paramType = "query", name = "address", value = "用户地址", required = true, defaultValue = "shenzhen")})@PostMapping("/user")public String addUser(@RequestParam String username, @RequestParam String address){return username + ":" + address;}@ApiOperation(value = "修改用户", notes = "修改用户,传入用户信息")@PutMapping("/user")public String updateUser(@RequestBody User user){return user.toString();}@GetMapping("/ignore")@ApiIgnorepublic void ignoreMethod(){}
}

项目测试

访问网址:http://localhost:8080/swagger-ui.html,查看接口文档

展开一个接口描述,单击Try it out ,在Parameters区域填写信息,点击 Execute 进行接口测试,Responses区域为测试结果

添加用户

 

修改用户

 

查询用户

 

删除用户

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [Vue3 + TS + Vite]文件选择器-组件
  • vue3、uniapp-vue3模块自动导入
  • 通过Python脚本git pull 自动重试拉取代码
  • vscode添加宏定义
  • 虚幻官方文档(持续更新)
  • 漏洞扫描的重要性,如何做好漏洞扫描服务
  • 数学工具 -- 均值滤波计算之python cv2.boxFilter用法
  • uniapp加载第三方字体方案对比(附原生微信小程序方案)
  • 中国编辑期刊
  • Qt+OpenCV配置和测试
  • ARM 处理器异常处理机制详解
  • MYSQL----表的创建
  • 海量数据的处理方法
  • 【C语言初阶】C语言指针全攻略:解锁C语言深层奥秘的钥匙
  • Springboot集成Mybatis在不同文件夹下出现同名文件时启动报错
  • 0基础学习移动端适配
  • 30天自制操作系统-2
  • CentOS 7 修改主机名
  • django开发-定时任务的使用
  • Gradle 5.0 正式版发布
  • IDEA 插件开发入门教程
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • jdbc就是这么简单
  • Mac转Windows的拯救指南
  • miaov-React 最佳入门
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 前端存储 - localStorage
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 试着探索高并发下的系统架构面貌
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 优化 Vue 项目编译文件大小
  • zabbix3.2监控linux磁盘IO
  • ​Java基础复习笔记 第16章:网络编程
  • # windows 安装 mysql 显示 no packages found 解决方法
  • #laravel 通过手动安装依赖PHPExcel#
  • #NOIP 2014# day.1 T2 联合权值
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (03)光刻——半导体电路的绘制
  • (11)MATLAB PCA+SVM 人脸识别
  • (4)(4.6) Triducer
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (八)Flink Join 连接
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)计算机毕业设计大学生兼职系统
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)Thymeleaf用法——Thymeleaf简介
  • .gitignore
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 6 redis操作类
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值