当前位置: 首页 > 后端技术 > PHP

对API进行版本控制的重要性以及如何去做

时间:2023-03-30 02:14:02 PHP

我在API设计中收到的最常见问题之一是如何对API进行版本控制。虽然并非所有的API都是一样的,但我发现在API版本控制方面,某些模式和实践适用于大多数团队。我将这些汇总在一起,这里有一些版本控制策略的建议,可以帮助大多数API提供者,无论他们是在内部还是外部部署API。API版本真的那么重要吗?API是您与API用户之间的链接。正常情况下,你们之间的羁绊是不会轻易断绝的。联系包括URI模式、有效负载结构、字段和参数名称、预期行为和其他内容。这种方法的最大好处是显而易见的:API消费者的理解不会改变,应用程序可以保证继续工作。然而,永久性的改变是不现实的。有时由于业务变化,您可能需要对API进行重大更改。发生这种情况时,您能做的最好的事情就是确保您不做任何会导致API使用者修复代码的事情。破坏性和非破坏性变更非破坏性变更通常就像“添加剂”一样,通常会在资源语句中添加新的字段或嵌套资源,或者添加新的端点,例如PUT或PATCH。API消费者应该从一开始就构建适应这些非破坏性更改的客户端代码。突破性的变化包括:1.Name字段或资源路径,通常是为了在API发布后统一命名规范。2.更改有效负载结构,通常是为了适应以下内容:重命名或删除字段b.将字段从单个值更改为一对多关系(例如从一个帐户的一个电子邮件地址移动到该帐户的电子邮件地址列表)c.修改API的URL,导致结果不一致。简而言之,一旦您向公众发布了您的API,就必须在不影响用户的情况下保持它可用。如果您遇到多个项目,则需要对API进行版本控制以防止破坏现有的API使用者。定义API版本控制策略任何不断发展的API都需要API版本控制策略。您的API版本可以根据API消费者的期望适应不同版本之间的变化。我通常建议将以下API版本控制策略作为整体API管理系统的一部分。1.如果您的API处于早期测试阶段,为了获得消费者反馈,请建立对您的API可能发生变化的正确预期。在这个阶段,你会保留这个版本一段时间,因为你的API设计可能仍然会改变。作为消费者,API是流动的,因此他们应该预料到可能发生的变化。2.一旦发布,你的API就应该被视为一份合同,没有新版本就不能被替换。3.不间断的改动会导致小版本出现问题,客户端会自动迁移到最新版本,没有任何负面影响。4.重大变更意味着客户必须迁移到这个新版本,因为它包含一个或多个重大变更。您必须制定适当的时间表并定期与API消费者沟通,以确保他们可以轻松迁移到新版本。但在某些情况下,这可能无法立即实现,因此您的团队将被要求暂时支持以前的API版本。何时必须实施API版本控制一旦确定需要API的新版本,就需要知道如何处理它。实现API版本控制的常用方法有3种。1、资源版本控制版本是HTTP请求中Accept头的一部分,例如Accept:application/vnd.github.v3+json发送到GET/customers。这被认为是许多版本控制的首选形式,因为资源在版本控制时需要保持在相同的URI。如果Accept标头中未提供,某些API选择提供最新版本作为默认版本。2.URI版本控制版本是URI的一部分,作为前缀或后缀,例如/v1/customers或/customers/v1。虽然URI版本控制不像基于内容的版本控制那样精确,但它往往是最常见的,因为它适用于各种不支持自定义标头的工具。缺点是资源URI会随着每个新版本的发布而变化,有些人认为这违背了拥有永不改变的URI的目的。3.主机名版本控制版本是主机名的一部分而不是URI,例如https://v2.api.myapp.com/cust...。当技术限制阻止基于URI或Accept标头到API的正确后端版本时,使用此方法。注意:无论您选择哪个选项,API版本都应该只包含主版本号。不需要小数字(即/v1/customers,而不是/v1.1/customers)。实现版本控制的工具使用工具和技术基本上可以启用API版本控制过程。使用市场上好的API编辑器将使技术开发团队能够在更短的时间内生成和切换更多的API版本,从而不断改进设计决策。结合工具进行版本控制是大多数开发过程的重要组成部分。API设计领域也有能够进行版本控制的工具。事实上,在全球范围内的API服务领域,已经出现了一些优秀的WebAPI设计工具。现在,如EOLINKER、RAML和Swagger,都提供了优秀的编辑工具来支持他们的语言。EOLINKER使用版本比较和键标提示,可以清晰的切换和比较。RAML和Swagger使用版本切换,可能稍微不方便。而且只有前者支持中文,后两者只支持英文。这些API编辑器可以轻松实现API版本控制,更容易在更短的时间内切换运行版本。附上EOLINKER官网:https://www.eolinker.com附上Swagger官网:https://swagger.io/附上RAML官网:https://raml.org/最后的想法请记住,API是连接您的消费者的枢纽。打破旧连接,需要新版本。选择策略、制定计划并将该计划传达给API使用者是版本控制的最终目的。参考:JamesHigginbotham,您何时以及如何对您的API进行版本控制?原文地址:https://dzone.com/articles/wh...