QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

关注

评论

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

寻找被遗忘的勇气(十五)

Changing Lin

3月日更

干货 | 比特币就是时钟

CECBC

比特币 时间同步

Web 安全之 CSRF

架构精进之路

Web 安全 3月日更

中台还没建就开始拆中台了?医疗中台何去何从?

菜根老谭

中台 医疗中台

PBAC相对于传统ABAC的优势

龙归科技

IT 架构师 权限 ABAC PBAC

教你如何在Centos配置Oracle客户端运行时

happlyfox

28天写作 3月日更

Wireshark 数据包分析学习笔记Day12

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

恭喜自己2021金三银四收到的第五个Offer:字节跳动Java研发岗

比伯

Java 编程 架构 面试 程序人生

Redis 在项目中合理使用经验总结

Java小咖秀

redis

HECO火币生态链挖矿系统开发搭建技术

薇電13242772558

数字货币 区块链生态

第八章作业

Kalman

产品经理 产品经理训练

第八章学习总结

Kalman

产品经理 产品经理训练

面试字节跳动定级2-2,拿32*16offer,P8大佬的算法教程给了我春天!

Java架构之路

Java 程序员 架构 面试 编程语言

使用 Arthas 排查 SpringBoot 诡异耗时的 Bug

阿里巴巴云原生

Java 开发者 云原生 中间件 Arthas

邀请领好礼!米家显示器挂灯、雷蛇烈焰神虫送给你!

滴滴云

三步上线自己的在线监考系统

融云 RongCloud

【科创人】维格表创始人陈霈霖:喜茶数字化转型的结晶是vika维格表

科创人

区块链助飞机加油和支付过程更透明高效

CECBC

区块链

TCP拥塞控制四种算法

赖猫

TCP 网络协议

GitHub Action + ACK:云原生 DevOps 落地利器

阿里巴巴云原生

容器 运维 云原生 k8s 应用服务中间件

华为18级工程师总结的50W字算法、LeetCode、操作系统、计算机底层刷题必备笔记

Java架构之路

Java 程序员 架构 面试 编程语言

Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?

数据库 redis 架构

互联网信贷风险与大数据 催收管理

张老蔫

28天写作

BOE(京东方)物联网解决方案让会议更“智慧”

爱极客侠

融云聊天室属性 kv

融云 RongCloud

音视频

如何写好操作类说明文档

lenka

3月日更

openpyxl 对Excel的基础操作

IT蜗壳-Tango

办公自动化 3月日更 IT蜗壳教学

本科毕业,六年Java开发经验,阿里技术三面+HR面,拿下38*16薪资P7offer

Java架构之路

Java 程序员 架构 面试 编程语言

【死磕JVM】一道面试题引发的“栈帧”!!!

牧小农

JVM Java虚拟机 运行时数据区 Java虚拟机栈 栈帧

架构师训练营第六周作业 - 命题作业

阿德儿

架构师训练营第十周作业 - 命题作业

阿德儿

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