快速业务通道

精通Grails: RESTful Grails - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
remote procedure call,RPC)。设 想,如果您有一个带有 getForecast(String zipcode) 方法的 Java Weather 类的话,就可以轻易地将 这个方法公开为一个 Web 服务了。实际上,Yahoo! 就有这样一个 Web 服务。在浏览器中输入 http://weather.yahooapis.com/forecastrss?p=94089,这样就会用你自己的 ZIP 代码来替代 p 参数了 。Yahoo! 服务还支持第二参数 — u —,该参数既接受华氏温度(Fahrenheit)符号 f,又接受摄氏温 度(Celsius)符号 c。不难想象,在假想的类上重载方法签名就可以接受第二参数:getForecast ("94089", "f")。

回过来再看一下我刚才做的 Yahoo! 搜索查询,同样,不难想象出,可以将它重写为一个方法调用。 http://api.search.yahoo.com/WebSearchService /V1/webSearch?appid=YahooDemo&query=beatles 轻松转换成了 WebSearchService.webSearch("YahooDemo", "beatles")。

所以如果 Yahoo! 调用实际上为 RPC 调用的话,那这跟我先前所称的 Yahoo! 服务是 RESTful 的岂 不是互相矛盾的么?很不幸,就是矛盾的。但犯这种错误的不只我一个。Yahoo! 也称这些服务是 RESTful 的,但它也坦言:从最严格的意义上讲这些服务并不符合 RESTful 服务的定义。在 Yahoo! Web Services FAQ 中寻找 “什么是 REST?”,答案是:“REST 代表 Representational State Transfer。 大多数的 Yahoo! Web Services 都使用 ‘类 REST’ 的 RPC 样式的操作,而非 HTTP GET 或 POST…… ”

这个问题在 REST 社区内一直引发着争论。问题是没有准确的定义可以简单明了地描述这种 “较之 POST 更偏好 HTTP GET 的、较之 XML 请求更偏好简单的 URL 请求的、基于 RPC 的 Web 服务” 。有些 人称之为 HTTP/POX 或者 REST/RPC 服务。其他人则对应 High REST Web 服务 — 一种与 Fielding 的 面向资源架构的定义更接近的服务 — 而称之为 Low REST Web 服务。

我将类似 Yahoo! 的服务称为 GETful 服务。这并不表示我看轻它 — 正相反,我认为 Yahoo! 在整 理不太正式的(low-ceremony)Web 服务的集合方面做的相当好。这个词恰到好处地概括出了 Yahoo! 的 RPC 样式的服务的益处 — 通过发出一个简单的 HTTP GET 请求来获得 XML 结果 —,而且没有滥用 Fielding 所作的原始定义。

精通Grails: RESTful Grails(2)

时间:2011-07-29 IBM Scott Davis

面向资源的 Web 服务

POST 与 PUT

在 REST 社区存在着有关 POST 和 PUT 在插入新资源方面所起的作用的争议。在 HTTP 1.1 的原始的 RFC(Fielding 是主要作者)中对 PUT 的定义称:如果不存在资源的话,服务器可以创建资源。而如果 已经存在资源的话,那么 “……封装的实体必须被当作是对驻留在初始服务器上的实体修改后的版本” 。因此如果不存在资源的话,PUT 就等于 INSERT。如果存在资源的话,PUT 就等于 UPDATE。 如果按如 下的方式定义 POST 的话,事情就复杂了:

“POST 旨在用一个统一的方法来涵盖以下所有功能:

注释现有资源;

将一则消息发布到告示板、新闻组、邮件列表或者类似文章上;

将诸如表格提交结果这样的数据块提供给数据处理进程;

通过追加操作扩展数据库。”

“注释现有资源” 似乎暗指 UPDATE,而 “将一则消息发布到告示板”、“扩展数据库” 似乎暗指 INSERT。

由于所有的浏览器在提交 HTML 表单数据时都不支持 PUT 方法(它们只支持 GET 和 POST),所以很 难确定在哪种情况下使用哪种方法最为明智。

Atom 发布协议(Atom Publishing Prot

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号