「第二部:容器和微服务架构](13) API和契约的创建发展和版本控制

简介: 「第二部:容器和微服务架构](13) API和契约的创建发展和版本控制


微服务API是服务与其客户端之间的契约。只有在不破坏微服务的API契约的情况下,您才能独立地开发微服务,这就是契约如此重要的原因。如果您更改合同,它将影响您的客户端应用程序或您的API网关。


API定义的性质取决于您使用的协议。例如,如果您使用消息传递(如AMQP),则API由消息类型组成。如果您使用的是HTTP和RESTful服务,那么API由URL、请求和响应JSON格式组成。


然而,即使您对最初的合同考虑周到,也需要随着时间的推移更改服务API。当这种情况发生时,尤其是当您的API是由多个客户端应用程序使用的公共API时,您通常不能强制所有客户端升级到新的API契约。通常需要以服务契约的旧版本和新版本同时运行的方式增量部署服务的新版本。因此,有一个服务版本控制策略是很重要的。


当API更改很小时,比如向API添加属性或参数,使用旧API的客户机应该切换并使用新版本的服务。您可能能够为所需的任何缺少的属性提供默认值,并且客户端可能能够忽略任何额外的响应属性。


但是,有时需要对服务API进行重大且不兼容的更改。由于您可能无法强制客户端应用程序或服务立即升级到新版本,因此服务必须在一段时间内支持旧版本的API。如果使用基于HTTP的机制(如REST),一种方法是将API版本号嵌入URL或HTTP头中。然后,您可以决定是在同一个服务实例中同时实现两个版本的服务,还是部署每个实例处理一个版本的API。一个很好的方法是中介模式(例如,MediatR库)将不同的实现版本分离成独立的处理程序。


最后,如果您使用的是REST架构,那么超媒体是对服务进行版本控制并允许可演化API的最佳解决方案。


后面会有专门的章节介绍API的版本控制和API的金丝雀部署,消息的版本控制和怎么保证不同版本的消息的兼容。


附加资源


  • 斯科特·汉斯曼 轻松制作ASP.NET Core RESTful Web API版本

http://www.hanselman.com/blog/ASPNETCoreRESTfulWebAPIVersingMadeEasy.aspx

  • 对RESTful Web API的版本控制

http://docs.microsoft.com/azure/architecture/best-practices/api-design

相关文章
API 微服务
31 0
|
2月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 8 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
189 15
|
3月前
|
API
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
|
3月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
3月前
|
缓存 监控 API
电商API的微服务架构优化策略
随着电商快速发展,API成为连接用户、商家与系统的核心。本文探讨微服务架构下电商API的优化策略,分析高并发、低延迟与数据一致性等挑战,并提供服务拆分、缓存异步、监控容器化等实践方案,助力构建高性能、高可用的电商系统,提升用户体验与业务效率。
77 0
|
8天前
|
人工智能 供应链 API
淘宝API商品详情接口全解析:从基础数据到深度挖掘
淘宝API商品详情接口不仅提供基础数据,更通过深度挖掘实现从数据到洞察的跨越。开发者需结合业务场景选择合适分析方法,利用AI标签、区块链溯源等新技术,最终实现数据驱动的电商业务创新。
|
11天前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
13天前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。
|
20天前
|
JSON 供应链 监控
1688商品详情API技术深度解析:从接口架构到数据融合实战
1688商品详情API(item_get接口)可通过商品ID获取标题、价格、库存、SKU等核心数据,适用于价格监控、供应链管理等场景。支持JSON格式返回,需企业认证。Python示例展示如何调用接口获取商品信息。
|
20天前
|
JSON 算法 API
干货!电商API接口(淘宝商品评论)json数据返回
要获取淘宝商品评论的JSON数据,需通过淘宝开放平台的商品评论API接口实现。以下是详细步骤及代码示例