写点什么

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:383101
用户头像

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

关注

评论

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

一直在云上的星空联盟,“真”上云了

亚马逊云科技 (Amazon Web Services)

云计算 AWS

《爱奇艺安全应急响应中心漏洞评分标准2021》来了

爱奇艺技术产品团队

安全 安全漏洞

设计模式【1】-- 单例模式到底几种写法?

秦怀杂货店

设计模式

如何使用数据仓库?

数据社

数据仓库 七日更

记一次由Arthas引起的Metaspace OOM问题

闲鱼技术

Java 阿里巴巴

LeetCode题解:42. 接雨水,双指针,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

explicit_defaults_for_timestamp 参数详解

Simon

MySQL 七日更

架构师训练营第五周课后作业

万有引力

反垄断之下 区块链迎来新生?

CECBC

区块链

Angel推荐算法在游戏推荐中的应用

DataFunTalk

学习

附PPT丨如何构建数据库容器化PaaS

dbaplus社群

数据库 容器

爱奇艺用户分析平台实践:TB级数据查询秒级返回

dbaplus社群

大数据

“区块链+”产业生态雏形已现 安全监管逐步完善

CECBC

区块链 区块链生态

架构师入门感悟之十

笑春风

安卓开发快速学习!一个小例子彻底搞懂Android的MVP模式到底是什么?面试必问

欢喜学安卓

android 程序员 面试 移动开发

Mybatis【7】-- Mybatis如何知道增删改是否成功执行?

秦怀杂货店

Java mybatis

Mybatis【8】-- Mybatis返回List或者Map以及模糊查询怎么搞?

秦怀杂货店

Java mybatis

星环科技助力商业银行机器学习平台建设

星环科技

FinTech

开一个世界末日的脑洞

熊斌

我的世界 生活记录 七日更

Mybatis【9】-- Mybatis占位符#{}和拼接符${}有什么区别?

秦怀杂货店

mybatis 预编译

JustSwap交易所系统APP开发|JustSwap交易所软件开发

系统开发

领域驱动设计DDD

积极&丧

Github标星5.3K,网易云的朋友给我这份339页的Android面经,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

Android开发全套学习!不同层级的Android开发者的不同行为,学习路线+知识点梳理

欢喜学安卓

android 程序员 面试 移动开发

Lambda【1】-- List相关Lambda表达式使用(上篇)

秦怀杂货店

Java Lambda

区块链发展的3个必经阶段究竟是什么

CECBC

去中心化

字节跳动开源云原生机器学习平台 Klever

字节跳动技术团队

学习 字节跳动

毕业三年,如何达到月薪30K?我想跟你聊聊!!

冰河

程序员 程序人生 架构师 升职加薪 提升自我

第五周作业

胡益

附PPT丨广东移动智慧中台能力运营实践

dbaplus社群

中台 中台战略

字节跳动自研「BVC2.0」视频编码器在 MSU 2020 中获得四项第一

字节跳动技术团队

字节跳动 视频编码

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