Api版本控制
版本控制是计算机软件行业人士使用的术语。但进化是我们所有人都要经历的事情,它适用于这个世界上的每个对象。
在计算机软件行业,可以看到每3至4年,每台计算机软件都会附带不同的发行版/版本,以满足当前/现代的要求。
版本控制是创建和管理软件产品的多个版本的实践,消费者可以根据自己的需求决定使用哪个版本,API的管理也是如此。
API的创建始终始于使应用程序与内部/外部应用程序开发人员集成的想法。就像任何其他传统软件产品一样,它总是从小规模开始,并且会随着时间而发展。让我们看下面的简单用例,以更好地理解它。
例如,我们可能希望使内部/外部应用程序开发人员能够访问客户信息,并且可能开始创建API以提供所需的功能。
作为第一个版本,您可以为API提供仅对客户信息的读取权限。后来,随着对应用程序需求的增加,您的应用程序开发人员可能会请求对客户信息的“写入/更新”访问权限。作为API创建者/开发者,您可以决定是否:
- 提供具有对客户信息的写入/更新访问权限的同一API的新版本
- 完全提供单独的API,以提供对客户信息的写入/更新访问权限
API的通用设计原则是使用第一种方法-从应用程序开发人员的角度来看,为我们提供相同功能的API的新版本,以及我们处理同一实体(客户)时的附加功能。这将导致具有相同API的2个版本:
• CustomerInfo v1.0-提供对客户信息的只读访问
• CustomerInfo v2.0 —提供对客户信息的读/写/更新访问
通过API的版本控制,CustomerInfo API的使用者可以根据需要决定使用哪个版本。
当我们想支持同一个API的多个版本时,作为API创建者/设计者,我们需要考虑以下02个主要设计决策:
• 指定API版本信息的格式是什么
• 消费者将如何指定所选API的API版本
选择用于指定版本信息的格式时,可以选择以下02种常见做法:
• 使用发布/构建日期-这允许使用发布/构建日期来唯一标识每个版本。
示例—版本=“ 20200808” | 版本=“ 20190102”
• 使用major.minor数字 -这些数字用于指定同一API的不同版本,并且该数字可以包含1或2或3位数字作为版本号的一部分。一些API开发人员使用“ v”前缀来表示它是版本号。
示例— version =“ 1” | 版本=“ v1” | 版本=“ 1.1” | 版本=“ v1.1” | 版本=“ 1.1.1” | 版本=“ v1.1.1”
在决定使用者如何指定版本信息时,可以从以下03种常见做法中进行选择:
• HTTP标头-自定义HTTP标头将用于传递API版本信息
示例— x-customerinfoapi-version:2.1
• 查询参数-API版本信息将作为查询参数传递
示例-/customerinfo?version=2.1
• URL -API版本信息将合并到URL本身
示例-/ v2 / customerinfo
作为API的创建者/开发者,我们还可以结合上面的一些方法,并提供用于提供API版本信息的混合方法。例如,我们可以使用URL方法来指定主要版本,而可以使用HTTP标头方法来指定API的次要版本。
如您所见,API版本控制是API设计/开发中的关键功能,并且作为API提供程序,使消费者能够在不同的API版本之间进行选择是关键的业务差异。
Api版本控制的更多相关文章
- ****Web API 版本控制的几种方式
个人建议:用content type,即放在Header里面!比如加一个Version:1.4.3 这篇文章写得很好,介绍了三种实现web api版本化的三种方式.我从评论里又收集到两种方式,所以一共 ...
- ASP.NET Core API 版本控制
几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些dat ...
- asp.net web api 版本控制
版本控制 版本控制的方法有很多,这里提供一种将Odata与普通web api版本控制机制统一的方法,但也可以单独控制,整合控制与单独控制主要的不同是:整合控制通过VersionController ...
- .Net Core中的Api版本控制
原文链接:API Versioning in .Net Core 作者:Neel Bhatt 简介 Api的版本控制是Api开发中经常遇到的问题, 在大部分中大型项目都需要使用到Api的版本控制 在本 ...
- 【转】.Net Core中的Api版本控制
原文链接:API Versioning in .Net Core 作者:Neel Bhatt 简介 Api的版本控制是Api开发中经常遇到的问题, 在大部分中大型项目都需要使用到Api的版本控制 在本 ...
- 微服务设计 - api版本控制
要描述了几种API版本控制的方法.用户可以查询原始的API,或者添加定制的头文件来接收特定的版本.如果应用程序收到一个重大修订,将URI修改为V2.在进行迭代改进时,将创建与更改日期相一致的端点,并允 ...
- 【转】ASP.NET Core API 版本控制
几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些dat ...
- API 版本控制的几种方式
个人建议:用content type,即放在Header里面!比如加一个Version:1.4.3 这篇文章写得很好,介绍了三种实现web api版本化的三种方式.我从评论里又收集到两种方式,所以一共 ...
- 【ASP.NET Core】ASP.NET Core API 版本控制
几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些dat ...
- .net core 实现 api网关 进行 api版本控制
场景: 由一次大的项目改动引起的app端api不兼容问题,这时候就需要对api做版本控制了,权衡之后因为用户不多,选择了强更,没人想在已经写了8000行代码的单个svc文件中维护好几个版本的接口或者继 ...
随机推荐
- Orchard Core创建CMS/Blog站点
安装.NET Core SDK 下载并安装当前最新版本.NET Core SDK 3.1: https://dotnet.microsoft.com/download 安装visual studio ...
- 基于gis的系统开发,程序运行出现问题 ArcGIS product not specified.You must first bind to an ArcGIS version prior to using any ArcGIS components.
在之前初始化的时候添加下面的一行代码:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);还需要添加一个引 ...
- 灵感来袭,基于Redis的分布式延迟队列(续)
背景 上一篇(灵感来袭,基于Redis的分布式延迟队列)讲述了基于Java DelayQueue和Redis实现了分布式延迟队列,这种方案实现比较简单,应用于延迟小,消息量不大的场景是没问题的,毕竟J ...
- 使用SSM框架实现Sql数据导出成Excel表
SSM框架实现SQL数据导出Excel 思路 首先在前端页面中添加一个导出功能的button,然后与后端controller进行交互. 接着在相应的controller中编写导出功能方法. 方法体: ...
- 【Java】socket编程,输入输出中的问题
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWri ...
- Java知识系统回顾整理01基础05控制流程04 for
一.for 比较for和while public class HelloWorld { public static void main(String[] args) { //使用while打印0到4 ...
- Java数组以及内存分配
Java数组以及内存分配 什么数组(简) 数组初始化 动态初始化 静态初始化 内存分配问题(重) 数组操作的两个常见小问题 什么是数组: 定义格式: 数组类型 [] 数组名 ; 如:常用格式,其他方式 ...
- JavaScript格式化返回当前日期和时间
要求: 返回当前日期和时间,如 2020年10月06日 星期二 下午08点15分35秒 代码实现: function getDate() { var date = new Date(); var ye ...
- 项目使用eslint
今天eslint版本更新了,然后昂,有些奇奇怪怪的错误提示了,然后想,这我得 1.配置一个保存时根据eslint规则自动修复 2.欸,之前编码遇到未使用的变量都会有标记黄线,我很好定位,这会怎么没了 ...
- C# 生成chart图表的三种方式
.net中,微软给我们提供了画图类(system.drawing.imaging),在该类中画图的基本功能都有.比如:直线.折线.矩形.多边形.椭圆形.扇形.曲线等等,因此一般的图形都可以直接通过代码 ...