Swagger2简单使用教程

1、简介

​ Swagger是为了解决企业中接口(api)中定义统一标准规范的文档生成工具。很多采用前后端分离的模式,前端只负责调用接口,进行渲染,前端和后端的唯一联系,变成了API接口。因此,API文档变得越来越重要。swagger是一个方便我们更好的编写API文档的框架,而且swagger可以模拟http请求调用。

2、常用注解与示例

  • @Api()用于类:表示标识这个类是swagger的资源

  •  @Api("用于类")@Controllerpublic class swaggerTest(){}
    
  • @ApiOperation()用于方法:表示一个http请求的操作

  • @Api("ApiOperation测试")
    @Controller
    public class swaggerTest(){@ApiOperation(value = "apiOperationTest", notes = "apiOperation测试")public void apiOperationSwaggerTest(){}
    }
    
  • @ApiParam():用于方法,参数,字段说明:表示对参数的添加元数据(说明或是否必填等)

  • @Api("ApiParam测试")
    @Controller
    public class swaggerTest(){@ApiOperation(value = "apiOperationTest", notes = "apiOperation测试")public void apiOperationTest(@ApiParam(name = "id", value = "1", required = true) Integer id){}
    }
    
  • @ApiModel()用于类:表示对类进行说明,用于参数用实体类接收

  • @ApiModel(description = "实体类", value = "实体类")
    public class City implements Serializable {}
    
  • @ApiModelProperty()用于方法,字段:表示对model属性的说明或者是数据操作更改

  • @ApiModel(description = "实体类", value = "实体类")
    public class City implements Serializable {@ApiModelProperty(name = "id", value = "编号", required = false, exmaple = "1")private int id;
    }
    
  • @ApiIgnore()用于类,方法,方法参数:表示这个方法或者类被忽略

  • @ApiIgnore
    @Api(tags = {"Xxx控制类"})
    @RestController
    @RequestMapping("/xxx")
    public class XxxController {}
    
  • @ApiImplicitParam()用于方法:表示单独的请求参数

    @ApiImplicitParams()用于方法,包含多个@ApiImplicitParam

  • @Api("测试1")@Controllerpublic class swaggerTest(){@ApiOperation(value = "apiOperationTest", notes = "apiOperation测试")@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer", paramType = "query"),@ApiImplicitParam(name = "name", value = "name", required = true, dataType = "String", paramType = "query")})public void apiOperationSwaggerTest(Integer id, String name){}}
    

3、使用步骤

maven导入依赖

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

创建配置类

给出一些基础配置

@Configuration
@EnableSwagger2 //开启Swagger2
public class Swagger2 {//是否开启swagger,正式环境一般是需要关闭的,可根据springboot的多环境配置进行设置@Value(value = "${swagger.enabled}")Boolean swaggerEnabled;@Beanpublic Docket createRestApi(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.xxxxxx.xxxxx")) //你的项目基础包名.paths(PathSelectors.any()).build();}private ApiInfo apiInfo(){return new ApiInfoBuilder().title("标题").description("api接口文档").version("1.0") //版本.build();}}

SpringBoot 配置文件 开启swagger

  • application-dev.yml文件
swagger:enabled: true

注意导包不要导错

import org.springframework.beans.factory.annotation.Value;
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;

实体类demo

@Entity
@Table(name = "city")
public class City implements Serializable {private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "ID")@Getter@Setterprivate int ID;@Column(name = "Name")@ApiModelProperty(value = "城市名字", dataType = "String", name = "name", example = "Kabul")@Getter@Setterprivate String Name;

代码中的@Getter@Setter 注解是使用 lombok代替get与set方法,使用方法参考另一篇

service与dao略过 看controller的写法

 @ApiOperation(value="按id查询城市信息")@ResponseBody@GetMapping("/queryCityList")public String queryCityList(@RequestParam("id") int id)  {List<City> queryCityList = cityService.queryCityList(id);String jsonString = JSON.toJSONString(queryCityList);return  jsonString;}

4、浏览器中使用

  • http://服务器ip:端口/swagger-ui.html

  • 界面

  • 可以看到刚才我们写的两个方法

Swagger2简单使用教程相关推荐

  1. vim简单使用教程【转】

    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...

  2. java map set_java中Map、Set、List的简单使用教程(快速入门)

    Map.Set.List List的常用方法 1.创建 List list = new ArrayList<>(); List list = new LinkedList<>( ...

  3. 【转】正则表达式简介及在C++11中的简单使用教程

    [转]正则表达式简介及在C++11中的简单使用教程 正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达 ...

  4. PHP在WPS中的应用,PHP+Laravel的简单应用教程【ajax的使用】,wps的使用教程

    PHP+Laravel的简单应用教程[ajax的使用]PHP·拉弗尔的简单应用教程[阿贾克斯的使用],下面由Laravel框架教程栏目给大家介绍PHP Laravel的简单应用教程[阿贾克斯的使用], ...

  5. 史上最简单MySQL教程详解(进阶篇)之存储过程(一)

    史上最简单MySQL教程详解(进阶篇)之存储过程(一) 史上最简单MySQL教程详解(进阶篇)之存储过程(一) 什么是存储过程 存储过程的作用 如何使用存储过程 创建存储过程 DELIMITER改变分 ...

  6. 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置

    什么是存储引擎? MySQL存储引擎种类 MyISAM 引擎 InnoDB引擎 存储引擎操作 查看存储引擎 存储引擎的变更 修改默认引擎 什么是存储引擎? 与其他数据库例如Oracle 和SQL Se ...

  7. IDEA简单配置教程

    IDEA简单配置教程 --做好前期配置工作,后期少走弯路. 创建模块(Module) 设置(Settings) 设置主题 窗体及菜单字体及大小 设置编辑区主题 通过插件(plugins)更换主题 设置 ...

  8. kindle的xray怎么用_Xray简单使用教程

    Xray简单使用教程 0X00下载 xray 为单文件二进制文件,无依赖,也无需安装,下载后直接使用. 下载地址为: 注意: 不要直接 clone 仓库,xray 并不开源,仓库内不含源代码,直接下载 ...

  9. navicat fo mysql 教程_Navicat For MySQL的简单使用教程

    1.前提是必须先安装好MySQL数据库(Mac下安装MySQL数据库见前一篇) 2.安装Navicat 3.点击navicate左上角:连接->MySQL->先测链接下,如果提示连接成功, ...

最新文章

  1. 依图科技CEO朱珑:“智能密度”对AI发展意味着什么?
  2. “智能+”时代,看见别人看不见的才是赢家
  3. Firefox火狐浏览器自用技巧汇总--以备使用--13.5.16
  4. SAP BSP应用有状态和无状态行为差异比较
  5. 数据库实践丨MySQL多表join分析
  6. APP支付报错ALI40247处理方案!
  7. 【汇编语言与计算机系统结构笔记16】子程序设计:子程序的嵌套与递归,多个模块之间的参数传送
  8. IOS 创建渐变图层
  9. Python中IO编程-StringIO和BytesIO
  10. python 成语接龙1-爬去四字成语
  11. 华为mate30是不是鸿蒙系统,这个意味着是不是鸿蒙系统?
  12. 动态内存分配实现冒泡排序
  13. 时空-问题集锦(转载)
  14. IT运维的相关需求分析报告(第一篇)
  15. BRISK特征提取算法 .
  16. Java实现-中位数
  17. V8常见去优化原因一览
  18. Android: Kotlin 材料设计入门
  19. 软件测试方法比较(给新手)
  20. Linux free -g 详解

热门文章

  1. 在Web开发中制作个人简历(超简单版)
  2. 更快 Maven 来袭,性能大幅提升
  3. 使用openvpn docker及frp docker工具构建虚拟专业网络(V-P-N)
  4. 惠普服务器怎么挂载虚拟光驱,虚拟光驱怎么用 虚拟光驱的安装步骤和载入镜像的方法...
  5. 【电池健康状态预测】基于灰狼算法优化BP神经网络实现电池健康状态预测附matlab代码
  6. Flash本地共享对象 SharedObject
  7. 测试:智能手表及运动手环估算运动数据准确度偏低
  8. 联想小新为硬件保留2G内存的解决方法
  9. 小米Mix概念手机火了,雷军又在玩什么新套路?
  10. 培训管理,剃头担子还是豆腐脑担子