基于swagger进行接口文档的编写
0. 前言
近期忙于和各个银行的代收接口联调,根据遇到的问题,对之前编写的接口进行了修改,需求收集和设计接口时想到了方方面面,生产环境下还是会遇到意想不到的问题,好在基本的执行逻辑已确定,因此只是对接口进行了一些微调,但是收钱无小事,之前在代码编写时对参数进行了很多的校验,代码修改之后一个参数的对不上都会导致接口调用的失败,所以接口文档也要进行修改。正好趁此机会利用swagger对接口文档进行了重构,记录一下搭建过程,也借此谈一下对接口设计及文档编写的一点心得。
1. 项目中添加swagger插件
引入jar包
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.4.0</version>
</dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.9</version>
</dependency> <!-- swagger2核心依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency> <!-- swagger-ui为项目提供api展示及测试的界面 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency> <!-- spring相关jar包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<!-- other jars-->
后续配置Maven + SpringMVC项目集成Swagger中有介绍,这里略过。
2. 生成接口
配置swagger只发现配置@Api注解的接口类
只对代收的类进行@Api注解标注,发现里面的所有接口,仅为调试,其他的方法级别的注解懒得加了
访问 http://localhost:8080/portal/swagger-ui.html#/
可以对每个接口进行传参调用。
3. 接口文档编写的几项原则
写接口文档时首先得知道你的读者是接口调用方的开发人员,是除你之外需要对这个接口最熟悉的人。所以写文档时需要注意几个原则:
- 格式简洁:文档需要有简洁的书写格式,体现在文档目录的设计、文档目的、接口介绍语言的精炼。
- 逻辑清晰:文档内容的介绍需要具有清晰的逻辑,具体到每个接口的介绍、调用及返回,得有清晰的路线。
- 内容全面:接口设计的目的、请求及参数格式、响应及响应格式,最好的检验方法是使用者拿到该文档之后能够自行成功的完成接口的调用。
- 有据可查:使用者在调用某接口时如果出错,是否能够凭借返回信息认识到出错的原因进而调整,而不必调用失败时一头雾水,这需要在设计者接口设计时就设定好各种错误的返回标识。
4. 接口文档内容编写
4.1 功能介绍
4.1.1 前言
主要介绍方案设计的目的、此方案所有接口共同实现的笼统的功能介绍、接口设计方和接口调用方(一般都是乙方。。。)各方的职责,等等
4.1.2 功能说明
详细介绍各个接口所实现的功能,使读者对各接口的作用有一个了解。内容尽量保持简洁全面,没必要把底层实现也写进去。
4.2 系统接口约定
这是整个文档最重要的部分,使用者可能不会看前言和介绍,但他要实现接口调用,必须参考约定中的请求格式及各项约定。
4.2.1 系统约定
介绍调用者和提供者共同遵守的编码约定、通信方式(RESTful 风格接口)、数据格式(JSON 或 XML)、编码方式(UTF-8)等。
4.2.2 接口数据格式
各个接口的请求介绍(请求参数的含义、请求地址、方法名称、请求格式),响应介绍(响应参数介绍、响应格式)
涉及到其他文件调用的也要详细介绍文件编写所要遵循的格式,最好能够内嵌附件。(如系统对账,需要读取ftp服务器上的csv文件内容与系统中比对,文档中就需要添加csv文件的编写规范,如:文件命名格式、文件内容格式、大小限制等)
4.3 返回值对照
接口调用成功的话返回约定好的返回值,更需要注意的是接口设计时就需要考虑到捕获各种错误(可通过枚举在系统中提前定义好各种错误的返回值),调用失败的话返回准确的提示信息,省的调用方一调用出错就来找你,对双方的时间都是一种浪费。
5. 接口文档示例
5.1 目录展示
5.2 接口请求部分内容
5.2.1 请求格式
介绍各个请求参数的定义和所要遵循的格式
5.2.2 请求地址、方法及格式
5.3 接口响应部分内容
5.3.1 响应格式
介绍各个响应参数的定义和所要遵循的格式
5.3.2 响应参数格式实例
5.4 返回码对照
定义返回码的值,调用成功或失败可参照返回码
基于swagger进行接口文档的编写的更多相关文章
- .net core 使用 swagger 生成接口文档
微软参考文档:https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?tabs= ...
- asp.net core 使用 swagger 生成接口文档
参考地址:http://www.cnblogs.com/daxnet/p/6181366.html http://www.jianshu.com/p/fa5a9b76f3ed 微软参考文档:https ...
- Spring Boot 集成 Swagger 构建接口文档
在应用开发过程中经常需要对其他应用或者客户端提供 RESTful API 接口,尤其是在版本快速迭代的开发过程中,修改接口的同时还需要同步修改对应的接口文档,这使我们总是做着重复的工作,并且如果忘记修 ...
- Go语言使用swagger生成接口文档
swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言.Swagger与一组开源软件工具一起使用,以设计.构建.记录和使用RESTful Web服 ...
- webapi 利用webapiHelp和swagger生成接口文档
webapi 利用webapiHelp和swagger生成接口文档.均依赖xml(需允许项目生成注释xml) webapiHelp:微软技术自带,仅含有模块.方法.请求-相应参数的注释. swagge ...
- 用Swagger生成接口文档
Swagger简介 在系统设计的时候,各个应用之间往往是通过接口进行交互的.因此接口的定义在整个团队中就变得尤为重要.我们可以把接口的规范用接口描述语言进行描述,然后Swagger可以根据我们定义的接 ...
- Spring Boot 集成 Swagger生成接口文档
目的: Swagger是什么 Swagger的优点 Swagger的使用 Swagger是什么 官网(https://swagger.io/) Swagger 是一个规范和完整的框架,用于生成.描述. ...
- spring-boot-route(五)整合Swagger生成接口文档
目前,大多数公司都采用了前后端分离的开发模式,为了解决前后端人员的沟通问题,后端人员在开发接口的时候会选择使用swagger2来生成对应的接口文档,swagger2提供了强大的页面调试功能,这样可以有 ...
- asp.net core使用Swashbuckle.AspNetCore(swagger)生成接口文档
asp.net core中使用Swashbuckle.AspNetCore(swagger)生成接口文档 Swashbuckle.AspNetCore:swagger的asp.net core实现 项 ...
随机推荐
- 7.5 zookeeper客户端curator的基本使用 + zkui
使用zookeeper原生API实现一些复杂的东西比较麻烦.所以,出现了两款比较好的开源客户端,对zookeeper的原生API进行了包装:zkClient和curator.后者是Netflix出版的 ...
- SpringBoot学习:整合shiro(身份认证和权限认证),使用EhCache缓存
项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 (一)在pom.xml中添加依赖: <properties> <shi ...
- 初学 Delphi 嵌入汇编[1] - 汇编语言与机器语言
非科班出身, 现在才接触汇编, 惭愧呀, 好好学! 主选课本是清华大学王爽老师的<汇编语言>. 推荐 王爽老师的汇编网 汇编语言之前是机器语言. 机器语言是机器指令的集合, 机器指令是一系 ...
- HTTPS证书撤销
如果浏览器信息被拦截,可以选择清洗掉之前的证书 关闭浏览器,在CMD中输入命令 certutil -urlcache * certutil -urlcache * delete certutil -u ...
- ASP入门(九)-Request对象小案例
我们将制作一个能够记住访问者姓名的页面,在这个小案例中,你将学会如何使用Request对象的Cookies.Form以及ServerVariables集合的值,还可以学习到如何使用Response对象 ...
- MATLAB 制作GIF图像
前提要求:图像集保存在某个文件夹中,且每个图像以数字形式顺序命名,如001.jpg,002.jpg等. 代码1: 这个代码生成的效果有点问题,建议采用代码2. wm={'overwrite','app ...
- linux mount
挂载 mount //10.65.200.168/linux_bj /home/linux_bj -t cifs -o username=niu,password=ruanxiaopang ...
- DELL平板如何安装WIN10系统 -PE启动问题
开机按F2可以进入BIOS设置,如果你的系统已经被删了,则开机会自动进入检查程序 进入BIOS之后,可以看到如果改成Legancy,默认第一启动方式是Internal HDD 我如果重装系统, ...
- 《python源代码剖析》笔记 python中的List对象
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.PyListObject对象 --> 变长可变对象,可看作vector<Py ...
- php获取当前时间的方法
1.获取当前时间 date('Y-m-d H:i:s', time()) 2.字符串转时间 date('Y-m-d H:i:s',strtotime('2018-8-21 22:00:00'))