我们在做开发的时候,经常需要输出接口文档,我们的接口文档,如果输出的有问题,首先给别人的感觉就是觉得你不专业,另外好的接口文档,给了他人以后,就完全可以按照你接口文档去做对接,而不是反复地再去问你,这样浪费了你的时间,也浪费人家时间。所以好的接口文档输出至关重要,但是怎么才算好的接口文档,我们在设计接口文档的时候都应该注意哪些点?今天我就为大家总结一下我们在输出接口文档的注意事项,希望大家多多点赞关注!!
1. 接口名称清晰易懂
在接口文档输出中,我们的接口名称应该能够非常准确地反映我们的接口功能,通过RestFul风格清晰展示接口功能,给人传递准确的信息。比如查询用户信息(queryUserInfo)。
2. 接口地址输出完整
接口地址的输出一定要完整,不要仅仅给别人输出的只是单纯的接口地址,我们要给别人输出的完整的接口结构,应该包含如下几个部分:
你只有给别人说明你接口的完整信息,别人才能够调通你的接口,当然我们的域名在很多情况下都是分很多环境,我们可以通过接口文档工具(比如:ApiFox,API等等)区别配置好不同的环境,默认为测试环境,同时也需要在备注里面将接口不同的环境域名写清楚。
3. 接口请求方式选用恰当
- GET:请求指定的资源。通常用于获取数据或文件。使用URL中的参数传递所需数据。适用于读取数据,不适用于修改或添加数据。
- POST:向服务器提交数据,请求处理指定资源。通常用于提交表单数据、上传文件等。数据包含在请求正文中,容量有限。适用于添加、修改数据。
- PUT:向服务器发送数据,请求服务器存储该数据,并给予客户端一个唯一的URL。通常用于更新服务器上已存在的资源。
- DELETE:请求服务器删除指定资源。适用于删除数据或文件。
- HEAD:与GET请求类似,但只返回HTTP报文头部信息,不返回实体内容。适用于检查资源是否存在或获取头部信息。
- PATCH(修补):对服务器上的资源进行部分更新。适用于更新资源的部分内容,而非整体。
- OPTIONS(选项):请求服务器支持的通信选项。适用于检查服务器支持哪些方法或通信选项。
- TRACE(追踪):请求服务器将来自客户端的请求原封不动地返回给客户端。适用于调试和诊断。
这些请求方式在HTTP协议中具有不同功能和用途,可以根据需求选择合适的请求方式。我们最常用的就是前四种,后面几种大家了解下即可。
注意:上面的请求方式使用场景并不是固定死的,我们要根据实际情况来去使用,比如,如果我们的查询接口请求参数非常多,如果利用GET请求,一方面导致URL非常长,另外一方面,对于后端来说,接口开发处理起来比较麻烦,所以这个时候我们就得结合实际情况选择POST请求。
4. 请求参数
请求参数是一个接口非常重要的一部分,我们必须要重视请求参数的规范,我总结了如下八个要素,一个规范的接口API应该包含如下:
- 参数名: 参数的名字都是驼峰命名,同时也要保证见明知意,比如userId。
- 类型: 参数的类型必须要写清楚,比如String、Integer等。
- 是否必填: 请求参数是不是必填的,如果要求必填的,当不传这个参数的时候,应当抛参数校验异常,给出错误提示。
- 默认值: 如果这个参数不传,是否有默认值,默认值是多少,必须要说清楚。
- 取值范围: 如果是Long,Integer等数值类型的话,这个就是一个范围值,比如1~10,如果是枚举值的话,那就是枚举范围,枚举都有哪些值,都需要一一说清楚,比如状态字段,都有哪些状态。
- 参数格式:比如你的参数是个日期的话,就需要说明参数格式,如yyyyMMdd。
- 入参示例值: 提供一个该参数的示例值,以便开发人员更好地理解和使用该参数。
- 备注: 用来描述该字段的名称,以及特别情况的描述。
上述的几个要素,我们需要根据自己的参数情况做简单的说明,并不是说每个都得具备,也不是说每个都得单独拉出来一个列,比如,我们可以将默认值,取值范围,参数格式这些放在备注里面说清楚即可。每次写接口文档,你就站在使用者的角度去审视你的接口,如果再去看你的接口,如果你没有因此有所困惑,那么就没什么问题,如果看哪里还是有歧义,就得需要补充清楚。
5. 响应参数
同样响应值,也有几个固定的元素应当需要注意对使用者进行提及,我的总结如下:
- 参数名称:描述该响应参数的名称。
- 参数类型:描述该响应参数的数据类型,如String、Integer等。
- 参数格式:描述该响应参数的数据格式,如yyyy-MM-dd、HH:mm:ss等。
- 参数说明:对该响应参数的含义进行详细的描述。
- 取值范围:描述该响应参数的取值范围,如整数范围、字符串长度等。
- 是否必填:描述该响应参数是否为必填项。
- 示例值:提供该响应参数的示例值,以便开发人员更好地理解和使用该参数。
在这里我们要注意这么两个问题:
- 一个项目里面的所有接口,应当保持同样的返回格式,比如,数据都在data里面,响应信息字段是message,响应码字段是code等等,一定要保持统一,方便使用者进行统一处理,不要一个接口一个样子,这样只会让人觉得你很不专业。
- 还有需要在接口开发完毕后,为使用者输出一份响应码说明,不同的响应码表示什么含义,特别是异常码,这样使用者就可以基于你的接口响应码进行相应的处理。
6. 接口错误码
一般错误码定义包括三列:错误码、错误码信息、含义,如下展示:
7. 请求头参数
每一个接口,我们需要明确写清楚接口请求头都需要什么参数,比如Token,Content-Type等等,这些都是必不可少的,否则接口报错是不可避免的。一般请求头包含如下几个部分:
- Content-Type:指定请求体的数据格式,如application/json、application/x-www-form-urlencoded、multipart/form-data等。
- Authorization:用于身份验证的令牌信息,如Token、Bearer等。
- Accept:指定客户端可以接受的响应数据格式,如application/json、text/html等。
- User-Agent:指定客户端的类型和版本信息,可以用于服务端进行针对性优化。
- Accept-Encoding:指定客户端可以接受的数据压缩格式,如gzip、deflate等。
- Cache-Control:指定客户端缓存的策略,如no-cache、max-age等。
- Cookie:包含客户端发送给服务器的cookie信息。
给你们展示一个接口请求示例:
8. 接口的安全性
在接口定义的时候,特别是对外接口,可能需要考虑到权限问题,以及验签等问题。所以必须要考虑到接口的安全问题,后续我会专门出一篇文章,详细介绍接口安全性的校验方法。
9. 接口的版本管理
有时候接口发生变化,我们无非有两种方式进行功能迭代或者技术迭代,要么单独提供一个新接口,要么就是基于原有的接口进行修改,如果参数和返回值不变还好,如果是直接对外的接口发生变化,就得要考虑新增接口,对之前使用的接口不能变,防止影响到正在使用的三方,这时候就得使用版本管理了。
版本管理常见的方式:
- 在接口文档中明确版本号:在接口文档中明确标识接口的版本号,例如在接口地址中添加版本号信息,如
https://example.com/api/v1/user
,表示该接口的版本号为v1。 - 使用语义化版本号:采用语义化版本号规范,即版本号格式为X.Y.Z,其中X表示主版本号、Y表示次版本号、Z表示修订号。当进行兼容性变更时,需升级主版本号;当增加功能且不影响现有功能时,需升级次版本号;当进行bug修复或小功能改进时,需升级修订号。
- 增量发布:在接口发生变化时,先发布新版本的接口,同时保留旧版本的接口。用户可以根据自己的需求来选择使用哪个版本的接口。随着新版本的接口逐步替换旧版本的接口,最终可以将旧版本的接口废弃。
10. 接口文档更新迭代
如果接口发生了变更,比如参数有哪些变更,错误码变更等等,都需要维护到文档上。同时需要登记变更的记录。我们可以在接口备注中标注清楚。
11 接口请求示例
接口请求示例也就是所谓的测试用例,现在很多API工具都支持测试用例的书写,我们可以针对接口在API中维护测试用例。
今天关于接口文档规范就给大家分享到这里,希望能够给大家带来帮助,也希望大家多多关注点赞支持!!