接口文档这几点我们一定要注意

news2024/11/13 4:04:20

我们在做开发的时候,经常需要输出接口文档,我们的接口文档,如果输出的有问题,首先给别人的感觉就是觉得你不专业,另外好的接口文档,给了他人以后,就完全可以按照你接口文档去做对接,而不是反复地再去问你,这样浪费了你的时间,也浪费人家时间。所以好的接口文档输出至关重要,但是怎么才算好的接口文档,我们在设计接口文档的时候都应该注意哪些点?今天我就为大家总结一下我们在输出接口文档的注意事项,希望大家多多点赞关注!!

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等。
  • 参数说明:对该响应参数的含义进行详细的描述。
  • 取值范围:描述该响应参数的取值范围,如整数范围、字符串长度等。
  • 是否必填:描述该响应参数是否为必填项。
  • 示例值:提供该响应参数的示例值,以便开发人员更好地理解和使用该参数。

在这里我们要注意这么两个问题:

  1. 一个项目里面的所有接口,应当保持同样的返回格式,比如,数据都在data里面,响应信息字段是message,响应码字段是code等等,一定要保持统一,方便使用者进行统一处理,不要一个接口一个样子,这样只会让人觉得你很不专业。
  2. 还有需要在接口开发完毕后,为使用者输出一份响应码说明,不同的响应码表示什么含义,特别是异常码,这样使用者就可以基于你的接口响应码进行相应的处理。

在这里插入图片描述

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. 接口的版本管理

有时候接口发生变化,我们无非有两种方式进行功能迭代或者技术迭代,要么单独提供一个新接口,要么就是基于原有的接口进行修改,如果参数和返回值不变还好,如果是直接对外的接口发生变化,就得要考虑新增接口,对之前使用的接口不能变,防止影响到正在使用的三方,这时候就得使用版本管理了。
版本管理常见的方式:

  1. 在接口文档中明确版本号:在接口文档中明确标识接口的版本号,例如在接口地址中添加版本号信息,如https://example.com/api/v1/user,表示该接口的版本号为v1。
  2. 使用语义化版本号:采用语义化版本号规范,即版本号格式为X.Y.Z,其中X表示主版本号、Y表示次版本号、Z表示修订号。当进行兼容性变更时,需升级主版本号;当增加功能且不影响现有功能时,需升级次版本号;当进行bug修复或小功能改进时,需升级修订号。
  3. 增量发布:在接口发生变化时,先发布新版本的接口,同时保留旧版本的接口。用户可以根据自己的需求来选择使用哪个版本的接口。随着新版本的接口逐步替换旧版本的接口,最终可以将旧版本的接口废弃。

10. 接口文档更新迭代

如果接口发生了变更,比如参数有哪些变更,错误码变更等等,都需要维护到文档上。同时需要登记变更的记录。我们可以在接口备注中标注清楚。
在这里插入图片描述

11 接口请求示例

接口请求示例也就是所谓的测试用例,现在很多API工具都支持测试用例的书写,我们可以针对接口在API中维护测试用例。

今天关于接口文档规范就给大家分享到这里,希望能够给大家带来帮助,也希望大家多多关注点赞支持!!

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

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

相关文章

【vue】项目开发常见问题目录

问题目录(持续更新!) 0,页面初始化1, v-if 与 v-for 同时使用报错的问题2, 页面传参注意事项3, Vue路由this.$router.push转跳同一个页面不刷新4,NavigationDuplicated: Avoided red…

Linux之Centos7.6版本下载及安装Go语言环境配置,安装Go1.18版本教程笔记-2023版

文章目录 一、Linux下安装Go环境1.远程获取2.解压3. 添加环境变量5.Go环境配置图配置完成信息图 二、VsCode连接我们Go2.1安装对应的插件2.2进行连接3.相关配置4.成功连接 一、Linux下安装Go环境 推荐在linux下安装Go,因为windows配置的话有些运行不了,在我做Mit6.8…

【SpringCloud学习笔记】gateway网关

gateway网关 核心概念: 路由(route):路由信息由 D、目标 RI、一组断言和一组过滤器组成。如果断言路由为真,则说明请求的 URI 和配配断言(predicate): Java8 中的断言函数&#xf…

5种raid冗余磁盘阵列

1 RAID?作用? 1.1 RAID RAID就是冗余磁盘阵列,通常称作「磁盘阵列」的RAID (Redundant Array of Independent Disks)功能,多半是应用在NAS这类肩负资料储存的设备上,它能依据NAS里硬盘数量、容量的不同,提…

频段、信道、信道带宽、传输速率无线路由器2.4GHz和5GHz的区别?

无线通信是指电磁波经过空间传播传递信息的通讯方式,也被称为无线电通信。无论是采用何种的无线接入技术,都会涉及到4个重要的参数: 第一、频段 无线通信使用的是电磁波,既然是波,那就有频率,通过将电磁波…

使用 Jetpack Compose 创建自定义的对话框(Dialog)

在 Jetpack Compose 中,对话框(Dialog)是一种常见的用户界面组件,用于展示重要的信息、确认操作或者收集用户输入。本篇博客将带你深入了解 Jetpack Compose 中的对话框,并展示如何创建自定义的对话框,以满…

复试线即国家线!你敢不敢冲?

List item 一、学校及专业介绍 成信大近年也比较热门,全称成都信息工程大学(Chengdu University of Information Technology),位于四川省成都市,为教育部首批“卓越工程师教育培养计划”试点高校、“四川2011计划”、“…

2023一造各科速记手册

[考点]我国建设项目总投资及工造价的构成 生产性建设项目总投资包括建设投资、建设期利息和流动资金:非生产性建设项目总投资包括建设投资、建设期利息。其中建设投资和建设期利息之和对应于固定资产投资,固定资产投资与建设项目的工程造价在量上相等。 工程造价是…

STM32单片机(七)ADC模拟数字转换器----第二节:ADC模数转换器练习1(AD单通道)

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

【送书福利-第十三期】计算机核心基础知识需要搞懂哪些?

大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! 本文目录 一、前言二、书籍介绍1、《深入…

Flink基础概念及常识

1.flink入门 官方定义:Apache Flink是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算,Flink能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。 简言之,Flink是一个分布式的计…

AUTOSAR(ETAS)工具ISOLAR简介

注:今天安装ETAS遇到了很多坑: 软件需要安装在VMware的windows虚拟机中,目的是因为公司的ETAS工具买的软件license是与电脑的mac地址绑定的,所以要想用ETAS软件,就必须使用虚拟机,然后更改mac地址&#xf…

第二十三章_Redis高性能设计之epoll和IO多路复用深度解析

before 多路复用要解决的问题 并发多客户端连接,在多路复用之前最简单和典型的方案:同步阻塞网络IO模型 这种模式的特点就是用一个进程来处理一个网络连接(一个用户请求),比如一段典型的示例代码如下。 直接调用 recv 函数从一个 socket 上读…

【零基础入门学习Python---Python的五大数据类型之字典类型】

一.Python的五大数据类型之字典类型 Python中的字典是一种无序的可变容器,可以存储任意数量的键值对。接下来我们就来学习一下五大数据类型之字典类型。 1.1 什么是字典 字典的键必须是唯一的,而值则可以是任意类型的对象,如字符串、数字、列…

2.6C++虚基类

C 虚基类概述 C虚基类是一种特殊的基类,用于解决多重继承中的菱形继承问题。 虚基类通过共享基类的成员来解决这个问题。 在定义虚基类时,需要在基类名前加上关键字 virtual 。 虚基类的初始化和普通基类的初始化有些不同,因为虚基类的构…

4.salesforce权限相关

salesforce权限相关 一,控制用户访问权限1.Levels of Data Access(数据访问权限级别)1. 组织(Organization)级别2. 对象(Objects)级别3. 字段(Fields)级别4. 记录&#x…

【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想(学习设备树过渡部分)

一个可移植性好的驱动程序,应该有三个部分组成 1、驱动框架程序(xxx_drv.c) — 对接应用层的 open read write 函数,不做GPIO具体操作 2、硬件操作程序(xxx_chip_gpio.c)— 执行具体的GPIO操作,…

传输层解析

目录 传输层解析 传输层概述 传输层的作用 传输层的协议 TCP协议概述 UDP协议概述 TCP协议 TCP的封装格式 TCP的连接与断开 TCP的流控与差错控制 TCP的计时器 TCP的应用 UDP协议 UDP的封装格式 UDP的应用 UDP的流程与差错控制 传输层解析 传输层概述 传输层的…

一招搞定电脑提示“由于找不到XINPUT1_3.dll,无法继续执行代码”问题

玩游戏或者运行程序软件的时候,电脑提示“由于找不到XINPUT1_3.dll,无法继续执行代码”是怎么回事呢?其实xinput1_3.dll是Windows操作系统中的一个动态链接库文件,它是DirectX API的一部分,用于提供对输入设备的支持&a…

CSS之定位

作用:灵活的改变盒子在网页中的位置 实现: 1.定位模式:position 2.边偏移:设置盒子的位置 leftrighttopbottom 相对定位 position: relative 特点: 不脱标,占用自己原来位置显示模式特点保持不变设…