REST-API 版本控制策略

2023-10-16 05:36
文章标签 api 版本 rest 控制策略

本文主要是介绍REST-API 版本控制策略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

管理分布式异构系统的应用程序编程接口 (API) 的方法不同于 Apache Maven 提供的经典工具,后者旨在简化技术上和同质相似工件的组装构建过程。这种经典的依赖管理工具的局限性在管理技术不同且独立的系统之间的 API 的上下文中变得明显,例如,表述性状态传输 (REST-API) 等 API 确保其网络功能。

服务提供商(可能会提供一些已实施的 API 版本)与其消费者之间的相互契约起着至关重要的作用,因此需要另一种方法来通过设计保证契约长期运行。此外,Apache Maven 通过区分三位数字来使用语义版本控制对于 REST-API 来说是不现实的。

因此,所应用的语义方案有意仅区分主要版本,其中每个增量都代表重大更改。在这篇立场论文中,作者强调,为了使 REST-API 的版本控制概念有效且可持续,软件工程师必须了解不同方法的功能和局限性,以及哪种方法最有效地与底层传输的功能保持一致技术。

介绍

应用程序编程接口(API)帮助公司集成应用程序甚至构建新的生态系统。通过 API 促进服务创新和货币化是一种趋势,这在许多领域都得到了认可。通过接口增强的系统不仅在工业中发挥着决定性作用,这决定了工业4.0的一部分,特别是智能工厂,而且在金融领域也发挥着决定性作用,例如遵守开放银行指令。[1][2]

具象状态传输 (REST)-API 的进步为跨异构系统的通信铺平了道路,其中大多数应用程序都具有不同的性质。然而,对 REST-API 版本控制的看法不同,并且构成了一篇很少撰写的论文,不仅从科学的角度来看。在本文中,术语 API 一般指 REST-API。虽然拥护者认为任何 API 都应该采用版本控制标识符,以便为可能存在向后不兼容的更改做好准备,这描述了重大更改的概念,但反对者声称绝大多数应用程序甚至不会受到这种程度的更改因此,根本不需要版本控制。 

然而,可维护 API 的设计给许多软件架构师和开发人员带来了许多挑战。尽管已经提出了许多策略来寻找有效的方法来应对重大变更,但当共存 API 的数量不断增加时,所有这些策略都给组织带来了共同的负担。简要介绍状态传输中涉及的每项技术,例如域名系统 (DNS)、统一资源定位符 (URL)、统一资源标识符 (URI) 和超文本传输​​协议 (HTTP),对于了解其主要技术是必要的。函数,因为它们中的每一个都构建了各种方法的关键元素。

域名系统

广泛使用的名为 DNS 的翻译服务可将互联网协议 (IP) 地址解析为人类友好的名称,反之亦然,通过利用可分离名称的分层排列,提供全局唯一性、稳健性、可扩展性和发现功能。自大约 30 年前推出以来,DNS 在支持协议和可扩展性方面不断发展。

虽然名称仍然比数字地址更有助于记住对象,但其背后的可识别资源和信息已变得更加通用,尤其是由于近年来应用程序界面的显着增长。然而,无处不在的物联网等新兴技术对这一全球标准的原有特性提出了挑战。

根据参考文献 [3],DNS 并不是为当今受物联网影响的世界中的移动性、效率和安全性方面的要求而设计的。层次结构越深,解析机制的延迟就会增加。健壮性和敏捷性之间存在另一个矛盾的问题,前者需要管理庞大的命名空间,而子域需要敏捷性以按需识别资源。

网址和统一资源标识符

尽管 URI 和 URL 这两个术语之间有明显区别,但它们通常被认为是等效的,但是,每个术语都是针对特定类型的资源管理而设计的。URI 处理对象的标识,而 URL 则描述可识别元素的位置。然而,由于 URL 也标识对象,因此它与 URI 具有相同的特征,但情况并非相反。[4] 换句话说,URI 是用来标识资源的,这些资源的存在、位置并不重要,因此与 URL 形成鲜明对比。[5]

Web 发明者兼万维网联盟 (W3C) 总监 Berners-Lee 撰文阐述了制定旨在实现 URI 不变的策略的重要性。[6] 此外,酷 URI 的概念旨在防止技术和组织变革期间标识符数量的增加,以符合万维网的架构建议。[7] [8] 相反,如果允许底层技术影响命名方案,那么技术的任何变化都可能对 URL 的关键概念产生不利影响,从而导致任意演变。[4]

HTTP协议

HTTP 是指 ISO/OSI 模型中定义的应用层传输协议,自 1990 年起就被 WWW 倡议使用。 [9] [10] 除了 HTTP 具有传输层安全性 (TLS) 的安全版本(即 HTTPS)之外, HTTP 消息由标头和正文组成,前者旨在将元数据与有效负载分开。

更准确地说,标头由一组值对组成,用于将元数据绑定到正在由应用程序处理的有效负载。因此,HTTP 标头使客户端和服务器能够分别以键值方式向其请求和响应传递附加信息。

例如,数据表示的协商是 HTTP 的一个关键功能,它为客户端(例如 Web 浏览器)提供了一定的灵活性。本质上,应用程序通过以下维度表达其对数据表示的偏好:​​媒体类型、语言、压缩和字符集。

这篇关于REST-API 版本控制策略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/219389

相关文章

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

Restful API 原理以及实现

先说说API 再说啥是RESRFUL API之前,咱先说说啥是API吧。API大家应该都知道吧,简称接口嘛。随着现在移动互联网的火爆,手机软件,也就是APP几乎快爆棚了。几乎任何一个网站或者应用都会出一款iOS或者Android APP,相比网页版的体验,APP确实各方面性能要好很多。 那么现在问题来了。比如QQ空间网站,如果我想获取一个用户发的说说列表。 QQ空间网站里面需要这个功能。

InnoDB的多版本一致性读的实现

InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非