快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ocol)是一个遵循 RESTful 原则的流行的聚合格式。Atom 的 RFC 作者试图给 POST 与 PUT 之间的争议做个了结:

“Atom Publishing Protocol 对如下的 Member Resource 使用 HTTP 方法:

GET 用于检索已知的 Resource 表示。

POST 用于创建新的、动态命名的 Resource……

PUT 用于编辑已知 Resource。不用它来创建 Resource。

DELETE 用于删除已知 Resource。”

在本文中,我将以 Atom 为指引,使用 POST 来 INSERT,用 PUT 来 UPDATE。但如果您在您的应用程 序中反其道而行的话,那么也是可以的 — RESTful Web Services 一书支持使用 PUT 来 INSERT。

那么要成为真正的面向资源的服务要满足哪些条件呢?可以这样归结:创建一个好的统一资源标识符 (Uniform Resource Identifier,URI),并以标准化的方式来使用 HTTP 动词(GET、POST、PUT 和 DELETE),而不是使用与自定义的方法调用相结合的动词(GET)。

再回到 Beatles 的查询上,要想更接近正式的 RESTful 接口,第一步就是要调试 URI。Beatles 不 是作为参数而被传入到 webSearch 方法,而是成为了 URI 的中心资源。例如,关于 Beatles 的 Wikipedia 文章的 URI 为 http://en.wikipedia.org/wiki/Beatles。

但是真正把 GETful 原理和 RESTful 原理区别开来的是用于返回资源表示的方法。Yahoo! RPC 接口 定义了很多自定义方法(webSearch、albumSearch、newsSearch 等等)。如果不读取文档的话,是无法 得知方法调用的名称的。就 Yahoo! 而言,我可以跟随它的模式并猜出它有 songSearch、imageSearch 和 videoSearch 这几个方法调用,但却不敢保证一定是这样。同样,其他的 Web 站点可能使用不同的命 名约定,如 findSong 或者 songQuery。就 Grails 而言,像 aiport/list 和 airport/show 这样的自 定义操作在整个应用程序内都是标准操作,但这些方法名称无法成为其他 Web 框架中的标准。

相反,RESTful 方法通常使用 HTTP GET 来返回所涉及的资源表示。因此对于 Wikipedia 上的任何资 源来说(http://en.wikipedia.org/wiki/Beatles、http://en.wikipedia.org /wiki/United_Airlines 或者 http://en.wikipedia.org/wiki/Peanut_butter_and_jelly_sandwich),我都可以得知 GET 是获 取它的标准方式。

当处理一个资源的完整的 Create/Retrieve/Update/Delete(CRUD)生命周期时,标准化的方法调用 的强大功能就变得更加显而易见了。RPC 接口不提供创建新资源的标准化方式。自定义的方法调用可以是 create、new、insert、add 抑或是其他任何调用。在 RESTful 接口中,每向 URI 发送一个 POST 请求 就会插入一个新资源。PUT 可以更新资源,而 DELETE 可以删除资源。

现在您已经对 GETful 与 RESTful Web 服务之间的差异有了更充分的了解了,并已经准备好用 Grails 创建自己的服务了。这两种服务的例子您都将看得到,但我要从简单的 POX 例子开始说起。

精通Grails: RESTful Grails(3)

时间:2011-07-29 IBM Scott Davis

用 Grails 实现 GETful Web 服务

从 Grails 应用程序中获取 POX 的最快捷的方式就是导入 grails.converters.* 包,然后添加一对 新的闭包,如清单 1 所示:

清单1. 简单的 XML 输出

import grails.converters.* class AirportController{   def xmlList = {    render Airport.list() as XML   }   def xmlShow = {    render Airport.get(params.id) as XML   }   //... the rest of the controller }

您在 “精通 Grails:使用 Ajax 实现多对多关系 中见过了使用中的 grails.converters” 包。该 包向您提供了非常简单的 JavaScript Object Notation(JSON)和 XM

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号