当前位置:网站首页>API 版本控制【 Eolink 翻译】
API 版本控制【 Eolink 翻译】
2022-07-27 07:37:00 【grownto9】
版本控制是创建和管理软件产品多个版本的方法。它能帮助用户根据自己的需求来决定使用哪个版本。这种方法同样适用于 API 。
API 的创建基于使用者和开发者共同的需求。它像其他传统的软件产品一样,随着时间的推移而发展,需要不断地迭代更新。
通过下面的例子,我们可以更好地理解什么是 API 版本控制。
假设一个场景,我们希望开发者能够访问客户信息,并且可以通过创建 API 来提供所需的功能。而作为初始版本,我们可以提供只有读取客户信息权限的 API 。然而随着应用程序需求的增加,开发者会增加对客户信息的写入或者访问权限等更深层次的功能进行迭代更新。
作为开发者,需要确定的有:
1、是否需要提供能写入客户信息与更新访问权限的同一 API 的新版本
2、是否需要提供单独的 API 来完成对客户信息的写入和更新访问权限
因为从开发者的角度出发,常规的 API 设计原则是设计出包含附加功能的相同 API 的新版本。由于都需要面对相同的主体——客户信息。因此会有相同 API 的两种版本:
CustomerInfo v 1.0 — 提供对客户信息的只读访问权限功能
CustomerInfo v 2.0 — 提供对客户信息的读、写、更新访问功能
通过 API 的版本控制,CustomerInfo API 的使用者可以根据自己的具体需要来决定使用哪个版本。
当我们想要获得同一个 API 的多个版本时,需要考虑的两个主要因素:
1、指定 API 版本信息的格式是什么
2、使用者可以如何指定所选 API 的版本
因此,在选择指定版本信息的格式时,有以下两种常用的方法:
1、使用发布日期区分——我们可以使用发布日期来标识这个新版本。
示例 — 版本 = ” 2020 年 8 月 8 日 ” | 版本 = “ 2019 年 1 月 1 日 ”
2、使用 major.minor 编号区分——这些编号用于指定同一 API 的不同版本,它可以包含一位、两位甚至三位数字,很多开发者会使用 “ v ” 前缀表示它是一个版本号。
示例 — 版本 = ” 1 “ | 版本 = ” v1 ” | 版本= ” 1.1 ” | 版本 = ” v1.1 ” | 版本 = ” 1.1.1 ” | 版本 = “ v1.1.1 ”
在考虑使用者如何指定版本信息时,同样有三种常用的方法:
1、*使用 HTTP Header * — 将自定义 HTTP 标头用于传递 API 版本信息
示例 — x-customerinfoapi-version:2.1
2、使用 Query Parameter — API 将版本信息作为查询参数传递
示例 — /customerinfo?version=2.1
3、使用 URL — 将 API 版本信息合并到 URL 中
示例 — /v2/customerinfo
我们可以结合上述方法,来获得 API 版本信息。例如,我们能通过使用 URL 的方式来指定 API 的主要版本,使用 HTTP Header的方式来指定 API 的次要版本。

上图演示工具为 Eolink 。
总而言之, API 版本控制是 API 设计与 API 开发中的一个关键。作为开发者,让使用者能够在不同的 API 版本之间进行选择是一个关键的业务差异化因素。
Eolink 作为一款国产构建 API 生态的文档工具,同样提供版本控制的功能,且支持在线使用和私有化部署,感兴趣可以自行试用:www.eolink.com
边栏推荐
- Jjwt generate token
- 单片机多级菜单
- Okaleido tiger is about to log in to binance NFT in the second round, which has aroused heated discussion in the community
- Cadence (XI) silk screen printing adjustment and subsequent matters
- Debug:与泛型有关的“无法解析的外部符号”
- Expose Prometheus metrics in Perl programs
- Solution to automatic disconnection of SSH link of Tencent ECS
- Leetcode54. 螺旋矩阵
- 【Golang】golang开发微信公众号网页授权功能
- DASCTF2022.07赋能赛密码wp
猜你喜欢

C language programming | program compilation and preprocessing

SQL labs SQL injection platform - level 1 less-1 get - error based - Single Quotes - string (get single quote character injection based on errors)

HU相关配置

Comprehensive analysis of ADC noise-02-adc noise measurement method and related parameters

什么是真正的 HTAP ?(二)挑战篇

【飞控开发基础教程4】疯壳·开源编队无人机-串口(光流数据获取)

ARP broadcasting practice cases

C#委托的使用案例

Closed hash and open hash resolve hash conflicts
![Multithreading [preliminary - Part 1]](/img/e6/5808bbdb8368bc780bde4c151e7cd7.png)
Multithreading [preliminary - Part 1]
随机推荐
C#winform 窗体事件和委托结合用法
Debug:与泛型有关的“无法解析的外部符号”
[QT] unable to open the containing file pcap.h (C1083) in QT creator
Plato farm is expected to further expand its ecosystem through elephant swap
Flynk de duplication (2) solve the hot issues in the process of flynk and flynk SQL de duplication
Shell enterprise interview exercise
Gossip: it's really important to have a rod in your hand and a net on your shoulder. As for how many fish are in the basket?
C#委托的使用案例
Redison 3.17.5 release, officially recommended redis client
记录一个自己挖的坑~
Closed hash and open hash resolve hash conflicts
JS存取cookie示例
3D激光SLAM:LeGO-LOAM论文解读---摘要
Confluence vulnerability learning - cve-2021-26084/85, cve-2022-26134 vulnerability recurrence
Flink de duplication (I) summary of common de duplication schemes in Flink and Flink SQL
Understanding and learning of properties class and properties configuration file
小程序支付管理-新版支付对接流程
C common function integration-2
Record a pit dug by yourself~
一体化实时HTAP数据库StoneDB,如何替换MySQL并实现近百倍分析性能的提升