基于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 返回码对照

定义返回码的值,调用成功或失败可参照返回码

 

 

转载于:https://www.cnblogs.com/zjfjava/p/9810657.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hyhyhy – 专业的 HTML5 演示文稿工具

Hyhyhy 是创建好看的 HTML5 演示文档的工具。它具备很多的特点&#xff1a;支持 Markdown&#xff0c;嵌套幻灯片&#xff0c;数学排版&#xff0c;兼容性&#xff0c;语法高亮&#xff0c;使用 Javascript API &#xff0c;方便的骨架。它支持 Firefox 2 , Safari 3 , Opera 9…

Java开发知识之Java的枚举

Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C中都是用const关键字. 枚举跟C概念都是一样的.就是特定的常量而已. 二丶Java中的枚举 java中的常量.一般都是final定义.但是我们讲过.final定义的常量.初始化的时候可…

linux php7 mongodb,CentOS 7下安装配置PHP7跟LAMP及MongoDB和Redis

CentOS 7下安装配置PHP7跟LAMP及MongoDB和Redis我是想能yum就yum&#xff0c;所有软件的版本一直会升级&#xff0c;注意自己当时的版本是不是已经更新了。首先装CentOS 7装好centos7后默认是不能上网的cd /etc/sysconfig/network-scripts/找到形如ifcfg-enp0s3的文件&#xff…

基于 Bootstrap 的响应式后台管理面板

你想建立一个后台管理面板或者分析仪表板吗&#xff1f;不需从头开始&#xff0c;Keen IO Bootstrap 是一个响应式的仪表盘模板&#xff0c;可以帮助你在几分钟内呈现数据&#xff0c;让你可以创建一个有吸引力的&#xff0c;定制的分析仪表板&#xff0c;随时可以展现给你的团…

sparkstreaming监听hdfs目录_大数据系列之Spark Streaming接入Kafka数据

Spark Streaming官方提供Receiver-based和Direct Approach两种方法接入Kafka数据&#xff0c;本文简单介绍两种方式的pyspark实现。1、Spark Streaming接入Kafka方式介绍Spark Streaming 官方提供了两种方式读取Kafka数据&#xff1a;一是Receiver-based Approach。该种读取模式…

时间服务器

时间服务器配置&#xff1a; 1 安装软件包: [rootlocalhost ~]# yum install ntp –y 2 修改配置文件 [rootlocalhost ~]# vim /etc/ntp.conf # 允许内网其他机器同步时间 192.168.1.0该网段 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 允许任何ip的客户机都可以…

使用 HTML5 Canvas 绘制出惊艳的水滴效果

HTML5 在不久前正式成为推荐标准&#xff0c;标志着全新的 Web 时代已经来临。在众多 HTML5 特性中&#xff0c;Canvas 元素用于在网页上绘制图形&#xff0c;该元素标签强大之处在于可以直接在 HTML 上进行图形操作&#xff0c;具有极大的应用价值。 这里分享一个惊艳的 Canva…

mysql 字符串类型 char varchar

字符类型用在存储名字、邮箱地址、家庭住址等描述性数据 char指的是定长字符&#xff0c;varchar指的是变长字符 #官网&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/char.html #注意&#xff1a;char和varchar括号内的参数指的都是字符的长度#char类型&#xff1a;定长…

二叉树遍历规则

树的遍历顺序大体分为三种&#xff1a;前序遍历&#xff08;先根遍历、先序遍历&#xff09;&#xff0c;中序遍历&#xff08;中根遍历&#xff09;&#xff0c;后序遍历&#xff08;后根遍历&#xff09;。 如图所示二叉树&#xff1a; 前序遍历&#xff1a;前序遍历可以记为…

php网页的注册界面设计,HTML开发博客之注册页面设计(一)

CSS文件的引入新建文件reg.html文件首先我们来分析网页布局这是我们页面完成后的效果&#xff0c;网页分为三部分头部&#xff0c;主体&#xff0c;和底部我们按照这个顺序开始编写。头部导航栏的编写html>用户注册页面首页科技资讯心情随笔资源收藏图文图片留言板登陆/注册…

Arctext.js - 基于 CSS3 jQuery 的文本弯曲效果

Arctext.js 是基于 Lettering.js 的文本旋转插件&#xff0c;根据设置的旋转半径准确计算每个字母的旋转弧度并均匀分布。虽然 CSS3 也能够实现字符旋转效果&#xff0c;但是要让安排每个字母都沿着弯曲路径排布相当的复杂&#xff0c;结合 Arctext.js 则可以轻松实现这个效果。…

在JDT中使用Java 8 Lambda

旧 Curmudgeon 认识Smalltalk的Dude 在修改Eclipse Java开发工具 &#xff08;JDT&#xff09;项目正在开发的Java 8支持时&#xff0c;我一直在使用这种语言。 我承认我对Java 8中的lambda有点不满意。 当然&#xff0c;这来自于知道Smalltalk &#xff08;和LISP / Schem…

zabbix邮件告警

zabbix邮件告警调用第三方邮件服务来发送邮件。 [roottiandong ~]# yum install mailx -y 修改配置文件 [roottiandong ~]# vim /etc/mail.rc 67 set from15600857257163.com smtpsmtp.163.com 68 set smtp-auth-user15600857257163.com 69 set smtp-auth-password密码&#xf…

SweetAlert – 替代 Alert 的漂亮的提示效果

Sweet Alert 是一个替代传统的 JavaScript Alert 的漂亮提示效果。SweetAlert 自动居中对齐在页面中央&#xff0c;不管您使用的是台式电脑&#xff0c;手机或平板电脑看起来效果都很棒。另外提供了丰富的自定义配置选择&#xff0c;可以灵活控制。 在线演示 插件下载 您可…

onpagefinished等了很久才执行_今天自律了吗?停课不停锻炼 才是战疫正确姿势

近日&#xff0c;中青校媒面向全国915名高校学生发起关于“宅家运动”情况的调查&#xff0c;发现15.39%被调查者在家期间会严格执行锻炼计划&#xff0c;39.96%选择间歇性完成制订的运动目标&#xff0c;还有44.65%在家很少运动。(3月18日《中国青年报》)新冠肺炎疫情发生&…

Ocrad.js – JS 实现 OCR 光学字符识别

Ocrad.js 相当于是 Ocrad 项目的纯 JavaScript 版本&#xff0c;使用 Emscripten 自动转换。这是一个简单的 OCR &#xff08;光学字符识别&#xff09;程序&#xff0c;可以扫描图像中的文字回文本。 不像 GOCR.js&#xff0c;Ocrad.js 被设计成一个端口&#xff0c;而不是围绕…

Sequence.js 实现带有视差滚动特效的图片滑块

Sequence.js 功能齐全&#xff0c;除了能实现之前分享过的现代的图片滑动效果&#xff0c;还可以融合当前非常流行的视差滚动&#xff08;Parallax Scrolling&#xff09;效果。让多层背景以不同的速度移动&#xff0c;形成立体的运动效果&#xff0c;带来非常出色的视觉体验。…

开源JVM Sampling Profiler

众所周知 &#xff0c;大多数现有的采样Java Profiler都必须在安全的地方进行堆栈跟踪收集。 诸如采样探查器之类的探查器就是这种情况&#xff0c;它使用SUN / Oracle管理代理来收集其堆栈跟踪。 这种方法的问题在于&#xff0c;由于不是程序中的每个点都不是安全点&#xff0…

雷霆战机

前言 多年前&#xff0c;你我在一起"打飞机"。为了实现真正的打飞机&#xff0c;在下一年前踏足帝都学习了无所不能的Python&#xff0c;辣么接下来带你在俩个小时用200行代码学会打飞机。 python中提供了一个pygame的模块能够让我们快速编写一个游戏。接下来&#x…

FancyBox - 经典的 jQuery Lightbox 插件

FancyBox 是一款非常优秀的弹窗插件&#xff0c;能够为图片、HTML 内容和其它任务的多媒体内容提供优雅的弹出缩放效果。作为是最流行的 Lightbox 插件之一&#xff0c;可以通过 fitToView 实现自适应功能。主要特色&#xff1a; ✓ 能够显示图片、HTML 元素、SWF 影片、ifra…