RESTful JSON Web服务最佳实践

本文讲的是RESTful JSON Web服务最佳实践,【IT168 资讯】Collaxa BPEL产品-后来成为Oracle SOA战略核心的一部分-背后的关键人物之一,Edwin Khodabakchian,已经单独致力于Feedly这一“将twitter和Google Reader编织成杂志一般的体验”的项目好几年了。最近Edwin发布了一本关于构建基于JSON的Web服务最佳实践的cookbook。当然这还在进行当中,但现有提供的指南包括了:
  第一阶段-定义一个简单的资源/服务 | 选一个示例资源比如客户信息,用JSON来对其建模。构建一个简单的servlet,以PUT来创建一个新客户,以GET基于客户键值返回客户信息,以DELETE删除客户,以POST更新客户信息。保证PUT返回的是关于新创建资源URL的正确信息。在我们的案例中,我们有一个将JSON映射到Java模型的框架,使用Hibernate在MySQL数据库中对这一模型作持久化存储。这一阶段的关键是,用JSON正确的表示,并且基本url要有简单整洁的格式。
还有:
  第三阶段-加入验证 | 修改你的服务实现为通过PUT和POST所收到的JSON资源加入一些数据验证。学会如何使用HHTP错误代码来定义和转移异常信息。学会如何在客户端处理这些异常。这一阶段的关键是保证你知道现在的HTTP错误代码,在适当的时候重用它们,并且在需要的时候创建符合于HTTP的新代码。
  现在正在著述中的有7个不同的阶段,其范围从我们提到的第一个,到认证,到生命周期。看到来自现实经验的指南一直都是非常棒,而且Edwin试图覆盖到在过去毫无疑问曾给它带来困难的问题,比如:
  有很多库可用以帮助你抽象XMLHTTPRequest。选择一个可以跨浏览器的。选择一个足够透明,能让你看到你所调用的GET,POST,PUT和DELETE操作的。或者:
  为业务事件定义合适的粒度和合适的类型不是那么容易。你也许需要几次的迭代才能把它做好。我的建议是不要过度设计:尽量保持简单并且出现新用例时进行重构。
  对于REST许多其支持者认为是理所当然的方面 ,当然也作出了参考,比如:
  第五阶段-添加缓存 | Web基础设施提供了丰富的缓存机制(最后修改信息,缓存持续期,eTag)。学习机制并看看你是否能利用它们来提升服务的性能与伸缩性。
  Edwin同时还涉及了一些非常实践的方案,这些方案也许乍一看是有背于REST/HTTP原则的:
  一些服务器不允许DELETE,这一种情况下你得学会如何用方法重写来POST。
  根据 Edwin的说法,他们正在考虑将其后端的一些基础设施开源出来。在些之前 FriendFeed API 的文档是可获得的。随着JSON+REST的逐渐流行,这必将是本有趣的cookbook,以供开发者考虑和利用。

时间: 2024-09-12 16:51:19

RESTful JSON Web服务最佳实践的相关文章

《JavaScript应用程序设计》一一1.13 RESTful JSON Web Services

1.13 RESTful JSON Web Services 表述性状态传递(Representational State Transfer,REST)是客户端与服务端的通信架构,REST架构采用关注点分离原则在数据资源与数据消费者之间建立了多层结构.在这种架构体系下,服务端仅关注数据资源的管理,而无需操心界面实现,客户端则可以以任何形式或语言去做界面实现.REST架构并不关心界面是被谁或是被怎样实现的,它仅处理并维护客户端与服务端的应用程序状态. RESTful应用使用HTTP方法(POST.

JavaScript Web 应用最佳实践分析

[编者按]本文作者为 Mathias Schäfer,旨在回顾在客户端大量使用JavaScript 的最佳 Web应用实践.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 对笔者来说,JavaScript 社区似乎已经陷入了一个时间扭曲隧道.我们现在进行的关于 JavaScript驱动(JavaScript-driven) Web 应用的讨论与2006年"Ajax"出现以及2012年JavaScript"单页应用"流行起来时的讨论如出一辙.只要我们站在巨人

Google Web开发最佳实践(二)

本指南逐步引导你使用 Web 新手开发包创建新站点,帮助你充分利用 Web 新手开发包提供的工具. 1.开发环境配置 本人环境为win7x64.需要安装以下环境. 安装NodeJS(同时会安装NPM): 安装Ruby(需要大于1.8.7版本),然后安装sass:gem install sass(楼主安装了好几次都提示连接错误,最终还是装上了...). 下载新手开发包:https://developers.google.com/web/starter-kit/,解压进入该目录,执行: npm in

Google Web开发最佳实践(一)

这篇文章最初是在阿里通信前端团队的github博客(http://aliqin.github.io)上看到的,原文地址https://developers.google.com/web/fundamentals/(要翻墙).既然要去阿里了,就得先熟悉熟悉环境,既然是最佳实践,就得自己亲自实践一下. 1.创建网站的内容和结构 内容是任何网站最重要的部分.所以让我们为内容而设计,而不要让设计支配内容.在这个手册中,我们首先确定我们需要的内容,基于这个内容创建一个页面结构,然后在简单的线性布局里呈现页

谢康 | 同程旅游微服务最佳实践

本文首发胖波聊架构界,微信公众号:xiaobo2as 本文概要 导言 微服务拆分的四个维度 微服务应该如何维护版本 如何从单体架构平滑过渡到微服务 结语 一.导言 同程微服务从立项到实施推广已经走过了整整两个年头,从最初的简单粗糙到今天的精细完善,接入服务数量也实现了从1到10,000+的增长. 微服务开发团队和大家一起踩过了无数的坑,最终打造了今天的DSF2.0平台.回顾爬坑记录,现整理一些爬坑心得体验供大家参考,也斗胆提出一些最佳实践以抛砖引玉. 下文将从开发者角度对微服务如何拆分, 版本管

WEB服务有待实践的检验[转]

web|web服务 SOAP,WSDL,和UDDI定义了XML中的WEB服务,但他们并不能保证会为软件架构中的组件带来好处   .要应用WEB服务,协议需要更加清晰,工具需要更加好用,而且,IT项目经理和开发商也需要在思想上有所转变. 但WEB服务在通信中的优点,诸如可重用组件和企业应用中的易集成性,已经使得微软和IBM惊异于它的高效.尽管WEB服务的应用尚在实验阶段,媒体已经将这些高级的概念深入人心.尽管开发者和反对者意见不同,但他们都从WEB服务中得到了大量的机会. 这里有一些开发者在WEB

WEB服务有待实践的检验

web|web服务 SOAP,WSDL,和UDDI定义了XML中的WEB服务,但他们并不能保证会为软件架构中的组件带来好处.要应用WEB服务,协议需要更加清晰,工具需要更加好用,而且,IT项目经理和开发商也需要在思想上有所转变. 但WEB服务在通信中的优点,诸如可重用组件和企业应用中的易集成性,已经使得微软和IBM惊异于它的高效.尽管WEB服务的应用尚在实验阶段,媒体已经将这些高级的概念深入人心.尽管开发者和反对者意见不同,但他们都从WEB服务中得到了大量的机会. 这里有一些开发者在WEB服务中

微服务最佳实践 【已翻译100%】

在我还不知道什么叫微服务架构的时候我就使用过它.以前,我写了一些管道程序(pipeline application),它由一些相互和队列交互的模块构成.自那之后,一批ThoughtWorks的专家也讨论过微服务.Fred George[1],接着是James Lewis[2]还有 Martin Fowler[3] 都写博文讨论微服务,使得微服务变成了下一个时髦术语,现在每个公司都想使用一些微服务. 现在有一些关于它的标签:endorsements,likes,trainings,甚至two da

Java Web服务,第1部分: Java Web服务在未来一年内的发展

2006 年将是 Web 服务(特别是 Java Web 服务)发展标志性的一年.新的第三代框架即将撩开面纱,这些框架将为 doc/lit SOAP 提供更好的支持,并能带来潜在的性能提高.同时,第四代 WS-* 标准也最终开始形成一组可互操作的层,对 SOAP 和 WSDL 进行扩展,以支持核心企业需求. 这篇文章是我的 Java Web 系列的第 1 部分,我将讨论以下 Web 服务目前的状态和在 2006 年即将发生的主要变化,并将简单说明新框架和技术如何相关和交互.后续文章将深入讨论其中