前言

一个好的可持续交付的项目,项目说明,和接口文档是必不可少的,swagger api 就可以帮我们很容易自动生成api 文档,不需要单独额外的去写,无侵入式,方便快捷大大减少前后端的沟通方便查找和测试接口提高团队的开发效率方便新人了解项目,剩余的时间就可以去约妹子啦

整合swagger api

这里我们自己去整合swagger api比较麻烦,要导入好几个包,有大神帮我们写好了轮子kinfe4j直接对应SpringBoot的启动项,而且在不影响原来使用功能上界面ui做了美化功能做了增强 我们直接整合这个就好了

        <!--api 文档-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>

正如官网所说

kinfe4j官方文档点击这里

自定义配置信息

为我们为swagger配置更多的接口说明

package cn.soboys.core.config;

import cn.hutool.core.collection.CollUtil;
import cn.soboys.core.ret.ResultCode;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.ResponseBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Response;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket; import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List; /**
* @author kenx
* @version 1.0
* @date 2021/6/21 16:02
* api 配置类
*/
@Configuration
public class SwaggerConfigure {
@Resource
private SwaggerProperty swaggerProperty; /**
* 构造api 文档
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30).globalResponses(HttpMethod.POST, this.responseList()) //全局respons信息
.apiInfo(apiInfo(swaggerProperty)) //文档信息
.select()
//文档扫描
//.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //有ApiOperation注解的controller都加入api文档
.apis(RequestHandlerSelectors.basePackage(swaggerProperty.getBasePackage())) //包模式
.paths(PathSelectors.any())
.build();
} private ApiInfo apiInfo(SwaggerProperty swagger) {
return new ApiInfoBuilder()
//标题
.title(swagger.getTitle())
//描述
.description(swagger.getDescription())
//创建联系人信息 (作者,邮箱,网站)
.contact(new Contact(swagger.getAuthor(), swagger.getUrl(), swagger.getEmail()))
//版本
.version(swagger.getVersion())
//认证
.license(swagger.getLicense())
//认证协议
.licenseUrl(swagger.getLicenseUrl())
.build();
} /**
* 全局response 返回信息
* @return
*/
private List<Response> responseList() {
List<Response> responseList = CollUtil.newArrayList();
Arrays.stream(ResultCode.values()).forEach(errorEnum -> {
responseList.add(
new ResponseBuilder().code(errorEnum.getCode().toString()).description(errorEnum.getMessage()).build()
);
});
return responseList;
}
}

抽出api文档配置模版信息为属性文件方便复用


package cn.soboys.core.config; import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringBootConfiguration; /**
* @author kenx
* @version 1.0
* @date 2021/6/21 16:01
* api 文档信息
*/
@Data
@SpringBootConfiguration
public class SwaggerProperty {
/**
* 需要生成api文档的 类
*/
@Value("${swagger.basePackage}")
private String basePackage;
/**
* api文档 标题
*/
@Value("${swagger.title}")
private String title;
/**
* api文档 描述
*/
@Value("${swagger.description}")
private String description;
/**
* api文档 版本
*/
@Value("${swagger.version}")
private String version;
/**
* api 文档作者
*/
@Value("${swagger.author}")
private String author;
/**
* api 文档作者网站
*/
@Value("${swagger.url}")
private String url;
/**
* api文档作者邮箱
*/
@Value("${swagger.email}")
private String email;
/**
* api 文档 认证协议
*/
@Value("${swagger.license}")
private String license;
/**
* api 文档 认证 地址
*/
@Value("${swagger.licenseUrl}")
private String licenseUrl;
}

简单使用

在你的Controller上添加swagger注解

@Slf4j
@Api(tags = "登录")
public class LoginController {
private final IUsersService userService; @PostMapping("/login")
@ApiOperation("用户登录")
public String login(@RequestBody UserLoginParams userLoginParams) {
Users u = userService.login(userLoginParams);
return "ok";
}
}

注意如启用了访问权限,还需将swagger相关uri允许匿名访问

/swagger**/**
/webjars/**
/v3/**
/doc.html

重启服务,自带api文档访问链接为/doc.html界面如下:



相比较原来界面UI更加漂亮了,信息更完善功能更强大

Swagger常用注解

Api标记

用在请求的类上,表示对类的说明,也代表了这个类是swagger2的资源

参数:

  1. tags:说明该类的作用,参数是个数组,可以填多个。
  2. value="该参数没什么意义,在UI界面上不显示,所以不用配置"
  3. description = "用户基本信息操作"

ApiOperation标记

用于请求的方法上表示一个http请求的操作

参数:

  1. value用于方法描述
  2. notes用于提示内容
  3. tags可以重新分组(视情况而用)

ApiParam标记

用于请求方法上对请求参数,字段说明;表示对参数的添加元数据(说明或是否必填等)

参数:

  1. name–参数名
  2. value–参数说明
  3. required–是否必填

ApiModel标记

用于java实体类上表示对类进行说明,用于参数用实体类接收

参数:

  1. value–表示对象名
  2. description–描述

    都可省略

ApiModelProperty标记

用于方法,字段; 表示对model属性的说明或者数据操作更改

参数:

  1. value–字段说明
  2. name–重写属性名字
  3. dataType–重写属性类型
  4. required–是否必填
  5. example–举例说明
  6. hidden–隐藏
@ApiModel(value="user对象",description="用户对象user")
public class User implements Serializable{
private static final long serialVersionUID = 1L;
@ApiModelProperty(value="用户名",name="username",example="xingguo")
private String username;
@ApiModelProperty(value="状态",name="state",required=true)
private Integer state;
private String password;
private String nickName;
private Integer isDeleted; @ApiModelProperty(value="id数组",hidden=true)
private String[] ids;
private List<String> idList;
//省略get/set
}

ApiIgnore标记

用于请求类或者方法上,可以不被swagger显示在页面上

ApiImplicitParam标记

用于方法表示单独的请求参数

ApiImplicitParams标记

用于方法,包含多个 @ApiImplicitParam

参数:

  1. name–参数名
  2. value–参数说明
  3. dataType–数据类型
  4. paramType–参数类型
  5. example–举例说明
  @ApiOperation("查询测试")
@GetMapping("select")
//@ApiImplicitParam(name="name",value="用户名",dataType="String", paramType = "query")
@ApiImplicitParams({
@ApiImplicitParam(name="name",value="用户名",dataType="string", paramType = "query",example="xingguo"),
@ApiImplicitParam(name="id",value="用户id",dataType="long", paramType = "query")})
public void select(){ }

总结

  1. 可以给实体类和接口添加注释信息
  2. 接口文档实时更新
  3. 在线测试
  4. kinfe4j 在swagger API只做增强,不会改变原有任何使用,更多增加使用功能

    点击这里进入kinfe4j官网文档

    关注公众号猿人生了解更多内容

SpringBoot 优雅整合Swagger Api 自动生成文档的更多相关文章

  1. 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)

    对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...

  2. MVC WEB api 自动生成文档

    最近在一直在用webapi做接口给移动端用.但是让我纠结的时候每次新加接口或者改动接口的时候,就需要重新修改文档这让我很是苦恼.无意中发现.webapi居然有自动生成文档的功能....真是看见了救星啊 ...

  3. SpringBoot 集成Swagger2自动生成文档和导出成静态文件

    目录 1. 简介 2. 集成Swagger2 2.1 导入Swagger库 2.2 配置Swagger基本信息 2.3 使用Swagger注解 2.4 文档效果图 3. 常用注解介绍 4. Swagg ...

  4. 使用swagger在netcorewebapi项目中自动生成文档

    一.背景 随着前后端分离模式大行其道,我们需要将后端接口撰写成文档提供给前端,前端可以查看我们的接口,并测试,提高我们的开发效率,减少无效的沟通.在此情况下,通过代码自动生成文档,这种需求应运而生,s ...

  5. eoLinker 新功能发布,增加了识别代码注释自动生成文档功能

    产品地址:https://www.eolinker.com开源代码:https://www.eolinker.com/#/os/download在线生成代码注释工具:http://tool.eolin ...

  6. 使用doctest代码测试和Sphinx自动生成文档

    python代码测试并自动生成文档 Tips:两大工具:doctest--单元测试.Sphinx--自动生成文档 1.doctest doctest是python自带的一个模块.doctest有两种使 ...

  7. 【Sphinx】 为Python自动生成文档

    sphinx 前言 Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等 开始 建一个存放文档的do ...

  8. 使用Sphinx为你的python模块自动生成文档

    Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等. 安装 创建一个sphinx项目 下面的命令会 ...

  9. 用doxygen自动生成文档

    1. 添加符合doxygen解析规则的注释 (比如函数说明,函数参数/返回值说明) 用qt-creator可以在函数上方一行键入“/**”,然后直接回车,就可以自动生成默认的格式. 2. 安装doxy ...

随机推荐

  1. 搭建LAMP环境部署discuz论坛

    !!!什么是LAMP: LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写: Linux,操作系统 Apache,网页服务器 MariaDB或MySQL,数据库管理系统(或者 ...

  2. mysql简单教程-(转自wid)

    21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...

  3. Docker五分钟搭建Wordpress

    当你看到这篇文章的时候,表明你已经有docker的基础知识了,或者可以看上一篇文章 Docker 入门教程. 传统的使用wordpress搭建网站,意味着你需要搭建以下四个环境: php: apach ...

  4. Question&&Answer

    1.使用Navicat连接Ubuntu上面的MySql数据库失败 解决办法:Navicat版本的问题,尝试换用更高版本的Navicat解决了问题(当时使用了Navicat Premium_11.2.7 ...

  5. urllib2连接超时设置

    #urllib2设置超时 #获取网页的源码 def getHtml(url,i): if i > 2: return try: req = urllib2.Request(url) time.s ...

  6. python实战项目练习-Django商城项目之注册功能实现

    设计到的前端知识 项目的前端页面使用vue来实现局部刷新,通过数据的双向绑定实现与用户的交互,下面来看一下需求,在用户输入内容后,前端需要做一些简单的规则校验,我们希望在在用户输入后能够实时检测,如果 ...

  7. Proteus仿真MSP430单片机的若干问题记录

    1.支持的具体型号: P7.8: Proteus8.9: Proteus8.9能够支持的类型明显要多于Proteus7.8.但是对于仿真而言,目前个人还是觉得Proteus7.8更稳定.这也是目前能用 ...

  8. QT环境变量设置

    首先找到自己对应的目录 我的如图 还有一个路径 将这两个路径添加到系统变量的Path中

  9. 『居善地』接口测试 — 12、Moco框架介绍

    目录 1.Mock功能介绍 2.Moco框架介绍 3.Moco框架在接口测试中的作用 4.Moco框架的优点 5.Moco框架的下载与启动 (1)Moco框架的下载 (2)Moco框架的启动 1.Mo ...

  10. 【NX二次开发】镜像对象

    使用uf5946获取镜像矩阵注意:uf5946镜像这个函数,只能用#define UF_plane_type=46这种类型的数据作为镜像面,不能用#define UF_datum_plane_type ...