前后端分离开发,后端需要编写接⼝说明⽂档,会耗费⽐较多的时间。

swagger 是⼀个⽤于⽣成服务器接⼝的规范性⽂档,并且能够对接⼝进⾏测试的⼯具。

作用

  • ⽣成接⼝说明⽂档
  • 对接⼝进⾏测试

使用步骤

  1. 添加依赖

    <!--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>
  2. 写配置类 SwaggerConfig

    /**
    * SwaggerConfig 接口文档配置类
    */
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig { /**
    * 配置接口文档生成规则
    */
    @Bean
    public Docket getDocket() {
    // 设置文档生成规则
    return new Docket(DocumentationType.SWAGGER_2)
    .apiInfo(apiInfo()) // 设置文档信息
    .select()
    // 设置哪个包下的类需要生成文档
    .apis(RequestHandlerSelectors.basePackage("com.luis.fmmall.controller"))
    .paths(PathSelectors.any()) // 定义哪些路径的接口需要生成文档
    .build(); } /**
    * 设置文档信息
    */
    private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
    .title("xxx接口文档")
    .description("这里是相关描述")
    .version("1.0")
    .contact(new Contact("luis",
    "https://www.cnblogs.com/luisblog",
    "xxx@qq.com"))
    .build();
    }
    }
  3. 在控制器类上使用 Swagger 的注解进行相关说明

    示例如下:

    @RestController
    @RequestMapping("/user")
    @Api(tags = "用户管理", value = "提供用户的登陆、注册、修改等功能") //类说明
    public class UserController { @Resource
    private UserService userService; @GetMapping("/login")
    @ApiOperation(value = "登陆验证", notes = "用户登陆检查") //方法名说明
    @ApiImplicitParams({ //参数说明
    @ApiImplicitParam(dataType = "string", name = "username", value = "用户名", required = true),
    @ApiImplicitParam(dataType = "string", name = "password", value = "用户密码", required = false, defaultValue = "123")
    })
    public ResultVo login(@RequestParam("username") String name,
    @RequestParam(value = "password", defaultValue = "123") String pwd) {
    return userService.checkLogin(name, pwd);
    }
    }
  4. 启动 SpringBoot 应用,访问 http://localhost:8080/swagger-ui.html

    效果如下:

常用注解说明

  • @Api:类注解,使用在控制器类上,对类进行说明

    控制器类 UserController 示例:

    @Api(tags = "用户管理", value = "提供用户的登陆、注册、修改等功能") //类说明
    public class UserController {
    }
  • @ApiOperation:方法注解,使用在方法上,对方法名进行说明

  • @ApiImplicitParam@ApiImplicitParams:方法注解,使用在方法上,对方法的形参进行说明

    单个形参使用 @ApiImplicitParam,多个形参使用 @ApiImplicitParams

    控制器类 UserController 的 login 方法示例:

    @GetMapping("/login")
    @ApiOperation(value = "登陆验证", notes = "用户登陆检查") //方法名说明
    @ApiImplicitParams({ //参数说明
    @ApiImplicitParam(dataType = "string", name = "username", value = "用户名", required = true),
    @ApiImplicitParam(dataType = "string", name = "password", value = "用户密码", required = false, defaultValue = "123")
    })
    public ResultVo login(@RequestParam("username") String name,
    @RequestParam(value = "password", defaultValue = "123") String pwd) {
    return userService.checkLogin(name, pwd);
    }
  • @ApiModel @ApiModelProperty:当接⼝的形参或返回值为对象类型时,在实体类中添加此注解说明

    接口的返回值为 ResultVo 对象示例:

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @ApiModel(value = "ResultVo 对象", description = "返回给前端的封装数据") //返回的类说明
    public class ResultVo { // 响应给前端的状态码
    @ApiModelProperty("响应状态码") //属性说明
    private int code; // 响应给前端的提示信息
    @ApiModelProperty("提示信息") //属性说明
    private String msg; // 响应给前端的数据
    @ApiModelProperty("数据") //属性说明
    private Object data;
    }

    接口的形参为 User 实体对象示例:

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @ApiModel(value = "User 对象",description = "⽤户/买家信息")
    public class User {
    @ApiModelProperty(dataType = "int",required = false)
    private int userId;
    @ApiModelProperty(dataType = "String",required = true, value = "⽤
    户注册账号")
    private String userName;
    @ApiModelProperty(dataType = "String",required = true, value = "⽤
    户注册密码")
    private String userPwd;
    @ApiModelProperty(dataType = "String",required = true, value = "⽤
    户真实姓名")
    private String userRealname;
    @ApiModelProperty(dataType = "String",required = true, value = "⽤
    户头像url")
    private String userImg;
    }
  • @ApiIgnore:接⼝⽅法注解,添加此注解的⽅法将不会⽣成到接⼝⽂档中

swagger-ui 插件

发现一个规律,越学到最后,越是有惊喜,有不有?

swagger-ui 插件是一款 UI 美化插件,是基于 swagger 的。

之前使用的默认 swagger 文档和调试页面如果使用起来不太顺畅,可以试试这款 swagger-ui 插件。

使用

  1. 添加依赖

    <dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.9.6</version>
    </dependency>
  2. 重启 SpringBoot 应用,访问 http://localhost:8080/doc.html

    效果如下:

还等什么,赶紧装插件去~

Spring Boot 中使用 Swagger的更多相关文章

  1. Spring Boot中使用Swagger CodeGen生成REST client

    文章目录 什么是Open API规范定义文件呢? 生成Rest Client 在Spring Boot中使用 API Client 配置 使用Maven plugin 在线生成API Spring B ...

  2. spring boot 中使用swagger 来自动生成接口文档

    1.依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swa ...

  3. spring boot 中使用swagger

    一.pom.xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox ...

  4. 【swagger】1.swagger提供开发者文档--简单集成到spring boot中【spring mvc】【spring boot】

    swagger提供开发者文档 ======================================================== 作用:想使用swagger的同学,一定是想用它来做前后台 ...

  5. Spring Boot中使用Swagger2构建强大的RESTful API文档

    由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...

  6. Spring Boot中使用Swagger2构建API文档

    程序员都很希望别人能写技术文档,自己却很不愿意写文档.因为接口数量繁多,并且充满业务细节,写文档需要花大量的时间去处理格式排版,代码修改后还需要同步修改文档,经常因为项目时间紧等原因导致文档滞后于代码 ...

  7. 在Spring Boot中使用swagger-bootstrap-ui

    在Spring Boot中使用swagger-bootstrap-ui swagger-bootstrap-ui是基于swagger接口api实现的一套UI,因swagger原生ui是上下结构的,在浏 ...

  8. Spring Boot中使用Swagger2构建RESTful APIs

    关于 Swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. S ...

  9. Spring Boot中使用Swagger2自动构建API文档

    由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...

随机推荐

  1. 2-1 走进selenium新世界

    走进Selenium新世界 浏览器 Firefox Setup 35.0.1 安装完成后设置菜单栏 关闭浏览器自动更新 插件配置(必备武器) FireBug Firebug是firefox下的一个扩展 ...

  2. 窗口部件-基础窗口部件 QWidget

    1 基础窗口部件 QWidget QWidget 类是所有用户界面对象的基类,被称为基础窗口部件.不多废话直接看代码 main.cpp 如下 #include<QtWidgets> int ...

  3. Spring常用注解(SpirngBoot方面讲的更加详细)

    注解实现自动装配 使用注解须知: 导入约束,context约束 配置注解的支持 <?xml version="1.0" encoding="UTF-8"? ...

  4. Toast 部分记录丢失问题处理

    在日常数据库运维过程中,我们可能会遇到类似以下的错误.该错误信息是由于部分tuple的 toast 字段丢失,导致数据无法访问.需要通过游标方式,将可以访问的数据备份出来. test=# create ...

  5. KingbaseES集群部署工具安装

    关键字: KingbaseES.Java.ClientTools 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows XP ...

  6. lombok Builder注解

    使用了@Builder 将会失去无参构造函数 可以通过 @Tolerate 来添加构造函数

  7. Java SE 3、封装

    封装 封装的好处 隐藏实现细节 可以对数据进行验证,保证安全合理 实现步骤 将属性进行私有化private 提供一个公共的(public)set方法,用于对属性判断并赋值 public void se ...

  8. MySQL DDL执行方式-Online DDL介绍

    1 引言 大家好,今天与大家一起分享一下 mysql DDL执行方式. 一般来说MySQL分为DDL(定义)和DML(操作). DDL:Data Definition Language,即数据定义语言 ...

  9. JUC在深入面试题——三种方式实现线程等待和唤醒(wait/notify,await/signal,LockSupport的park/unpark)

    一.前言 在多线程的场景下,我们会经常使用加锁,来保证线程安全.如果锁用的不好,就会陷入死锁,我们以前可以使用Object的wait/notify来解决死锁问题.也可以使用Condition的awai ...

  10. ProxySQL 配置ProxySQL

    转载自:https://www.jianshu.com/p/212397a1be67 假定你已经对ProxySQL的架构有所了解.本文对ProxySQL的所有配置都是使用Admin管理接口完成的,该管 ...