在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

RESTful 服务的版本管理经验

  • 2013-09-17
  • 本文字数:633 字

    阅读完需:约 2 分钟

最近, Howard Dierking 将在设计 NuGet API 的下一个主要修订版(v3)时新学到的经验,与他在大约一年前的观念做了对比,并写道:使用服务器驱动的内容协商,但借助与备选版本和表示格式的链接来提升响应能力,从而让客户端根据其需要选择访问哪个URI。

通过对带有重要扩展需求的真实应用API,以及若干不同客户端进行对比,Howard 发现在他最初的想法中,过多地相信了服务器驱动内容协商的保证。而现在他发现,这会把客户端过多地交道了服务器手中:客户端能够请求一份特定的表示,但它会得到什么,则依旧取决于服务器。

Howards 发现了另一种选择——一种混合方式——它基于服务器驱动内容协商并链接到规范资源,但通过链接到表示的其它变体进行增强。这样,客户端就可以根据自身需求,以及链接提供的元数据,来选择访问哪个 URI。

带着这样的推测——版本控制依赖于统一接口的哪部分发生了变化——Howard 将新的版本管理策略总结如下:

  1. 如果只是增加内容,那么放心地将它们增加到表示即可。因为客户端将忽略那些它们并不理解的东西。
  2. 如果要对表示做出重大改变,或是改变底层资源的含义,那么使用新名字(URI)创建一份新的资源。
  3. 这样使用内容协商:让它提供通往资源的优化路径,但永远赋予客户端做出不同选择的控制权(通过链接的方式)。

上述三点中,只有第一点与去年的观点相同;而另外两点则根据他目前的想法进行了修订。

Howard Dierking 是一位参与 NuGet API(微软开发平台的包管理器)项目的开发者。

查看英文原文: Experiences Versioning a RESTful Service

2013-09-17 02:383557
用户头像

发布了 256 篇内容, 共 88.4 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

华为云企业快成长安全技术创新论坛广州站举办在即 都有哪些亮点干货?

说山水

OpenFeign框架适配模块及实现原理

互联网架构师小马

注解切面适配模块及实现原理

互联网架构师小马

TiDB x Catalyst丨秒级洞悉数据价值,TiDB 帮助“客户成功 SaaS 厂商”提升用户体验

PingCAP

数据库 分布式 TiDB

GitHub热榜,亿级流量并发手册彻底揭开阿里高流量的秘密

互联网架构师小马

Python的离线安装

为世界第一大癌症高效研发首创新药,AI大模型助力药物研发叩开未来之门

飞桨PaddlePaddle

人工智能 paddle 飞桨

字节算法中了80%!靠着这份GitHub上的算法小抄,成功斩获Offer

互联网架构师小马

Java 数据结构 算法 LeetCode

数据库的 Schema 变更实现

KaiwuDB

KaiwuDB Schema 锁表

瓴羊Quick BI:数据大屏的智能解决方案

流量猫猫头

Dubbo框架适配模块及实现原理

互联网架构师小马

2023 可信数据库发展大会:近百位行业大咖将出席演讲

KaiwuDB

KaiwuDB TDBC 2023可信数据库发展大会

NFTScan 与 SPACE ID 达成合作伙伴,支持 .bnb / .arb 域名搜索!

NFT Research

域名 NFT\

逐鹿AI+、论道沪上,华为云企业快成长AI+大数据技术创新论坛在上海举行

说山水

百度沈抖:大模型 产业智能化时代的新引擎

飞桨PaddlePaddle

百度 算法

软件测试 | Dalvik虚拟机是如何执行程序的

测吧(北京)科技有限公司

测试

瓴羊Quick BI:商业智能工具的新标杆

巷子

Pycharm配置远程调试

重磅再推 | 基于OpenSearch向量检索版+大模型,搭建对话式搜索

阿里云大数据AI技术

人工智能 搜索引擎 企业号 6 月 PK 榜

SpringMVC框架适配模块及实现原理

互联网架构师小马

啥?PCB拼版对SMT组装有影响!

华秋PCB

PCB SMT PCB设计 PCB拼版 贴片

麒麟操作系统是什么?和linux的区别是什么?

行云管家

信创 麒麟操作系统

软件测试/测试开发丨Pytest测试框架学习笔记

测试人

程序员 软件测试 pytest

我的多巴胺回来了!双手奉上在rumble上下载视频的最佳秘诀!

frank

Bettertouchtool for Mac:触控板增强工具

背包客

macos Mac 软件 BetterTouchTool教程 Mac触控板增强 Bettertouchtool

GitHub标星159K的Java学习手册,太香了!

互联网架构师小马

Java

深入学习 Linux 操作系统的存储 IO 堆栈

KaiwuDB

KaiwuDB Linux存储 IO堆栈

软件测试 | Selenium-Grid架构

测吧(北京)科技有限公司

测试

KaiwuDB 数据库高可用方案及落地实现

KaiwuDB

KaiwuDB 数据库高可用

Wallys DR9074 4x4 Wlan module work on X86 device/DR9074 应用在X86。

Cindy-wallys

QCN9074 QCN9024

RESTful服务的版本管理经验_SOA_Jan Stenberg_InfoQ精选文章