RESTful服务的版本管理经验 (转)

原文:RESTful服务的版本管理经验

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

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

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

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

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

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

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

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

时间: 2024-08-05 23:40:38

RESTful服务的版本管理经验 (转)的相关文章

应用Spring MVC发布restful服务是怎样的一种体验

摘要:“约定优于配置”这是一个相当棒的经验,SOAP服务性能差.基于配置.紧耦合,restful服务性能好.基于约定.松耦合,现在我就把使用Spring MVC发布restful服务的过程同大家分享.代码之优雅.过程之简单.编码之愉快,不是发布SOAP服务所能匹敌的. 关键字:java, rest, webservice, spring mvc 前提:IntelliJ IDEA (13.1.5 版本), apache maven (3.2.3 版本), Tomcat(7.0.56版本), Spr

如何用Google APIs和Google的应用系统进行集成(2)----发现Google APIs的RESTFul服务

上篇文章,我提到了,Google APIs暴露了86种不同种类和版本的API.我们可以通过在浏览器里面输入https://www.googleapis.com/discovery/v1/apis这个URL地址,其将会把所有Google API支持的不同种类和版本的API全部列出来.其具体信息如下: 序号 API 标题 名字 版本 RestFul请求的URL RestFul请求的URL 1 Ad Exchange Buyer API adexchangebuyer v1 https://www.g

如何用Google APIs和Google的应用系统进行集成(3)----调用Google Discovery RESTful服务

说了这么多,那么首先允许我以Google Discovery RESTful服务为例,给大家演示如何用最普通的Java代码调用Google Discovery RESTful服务. 引言: 在"如何用Google APIs和Google的应用系统进行集成(2)"的下面,我列出了当前Google APIs支持的所有的Google APIs.其实这个表格是我用代码调用Google Discovery RESTFul服务自动生成的.具体的步骤和代码如下: (1) 访问Google Disco

基于dubbo快速发布restful服务

本文使用官方项目示例,基于dubbox发布restful服务.jdk,eclipse.maven神马环境的就不讲了,自行baidu之. dubbox下载.编译 下载地址:https://github.com/dangdangdotcom/dubbox下载方式可以用git下载,也可以打包下载.下载之后,用maven导入(eclipse->import->Maven).dubbo项目结构: 使用maven打包,版本2.8.4. zookeeper安装 本文使用的是单节点的注册中心,在实际项目中需要

WebService框架CXF实战一RESTFul服务(七)

JAX-RS概述 JAX-RS是Java提供用于开发RESTful Web服务基于注解(annotation)的API.JAX-RS旨在定义一个统一的规范,使得Java程序员可以使用一套固定的接口来开发REST应用,避免了依赖第三方框架.同时JAX-RS使用POJO编程模型和基于注解的配置并集成JAXB,可以有效缩短REST应用的开发周期.JAX-RS只定义RESTful API,具体实现由第三方提供,如Jersey.Apache CXF等. JAX-RS包含近五十多个接口.注解和抽象类: ja

用 NetBeans 快速开发 Java JAX-RS RESTful 服务

有很多IDE可以开发Java RESTful服务,Eclipse.NetBeans等,个人偏好使用NetBeans,本文介绍使用NetBeans开发的入门步骤. <理解RESTful架构>.<RESTful API 设计指南>.<RESTful API 设计最佳实践>这三篇文章是介绍RESTful架构比较经典的文章,推荐对RESTful有兴趣的可以读一下. 我也整理的阅读笔记在GitHub上:https://github.com/yulongyz/Reading/blo

使用Spring MVC 4构建Restful服务

使用Spring MVC 4构建RESTful服务相对于其它框架来说,有很多优势.首先,Spring MVC 4作为Spring的框架之一,可以很好地与Spring进行集成.其次,Spring MVC 4的拦截器是在方法层级上的拦截,相对于其它MVC框架(如Struts2)的拦截器具有更高的效率.再者,Spring MVC 4采用基于注解的配置,入手容易,开发灵活. Spring MVC 4采用的是jacson解析JSON.jacson一款非常高效强大的JSON工具类,可以轻松地在JAVA对象与

WebService框架CXF实战一发布RESTFul服务(七)

JAX-RS概述 JAX-RS是Java提供用于开发RESTful Web服务基于注解(annotation)的API.JAX-RS旨在定义一个统一的规范,使得Java程序员可以使用一套固定的接口来开发REST应用,避免了依赖第三方框架.同时JAX-RS使用POJO编程模型和基于注解的配置并集成JAXB,可以有效缩短REST应用的开发周期.JAX-RS只定义RESTful API,具体实现由第三方提供,如Jersey.Apache CXF等. JAX-RS包含近五十多个接口.注解和抽象类: ja

IntelliJ IDEA + Maven + Tomcat + Jersey搭建RESTful服务

本文参考以下内容: [1] Starting out with Jersey & Apache Tomcat using IntelliJ [2] [Jersey]IntelliJ IDEA + Maven + Jetty + Jersey搭建RESTful服务 感谢两位作者. 0. 创建新项目 在IntelliJ中创建新项目,选择Java Enterprise -> RESTful Web Service -> Setup libery later. 1. 加入web框架和maven