快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
   }   } }

每一个块的最后一行一定会是一个 render、return 或者 redirect — 与普通操作没什么不同。如果 Accept 报头变成 “all”(*/*)的话,则会使用块中的第一个条目。

改变 cURL 中的 Accept 报头是不错,但是通过改变 URI 您还可以作一些测试工作。 http://localhost:8080/trip/airport/list.xml 和 http://localhost:8080/trip/airport/list? format=xml 都可以用来显式地覆盖 Accept 报头。随便试一下 cURL 和各种 URI 值,确保 withFormat 块能发挥预期作用。

如果想让这个行为成为 Grails 中的标准的话,不要忘记您可以输入 grails install-templates,并 在 /src/templates 中编辑文件。

所有的基本构建块就位之后,最后一步就是将 GETful 接口转化成一个真正的 RESTful 接口。

精通Grails: RESTful Grails(7)

时间:2011-07-29 IBM Scott Davis

用 Grails 实现 RESTful Web 服务

首先,需要确保您的控制器已经开始响应那四个 HTTP 方法了。回想一下,如果用户不指定一个像 list 或 show 这样的操作的话,index 闭包就是通往控制器的入口点。index 默认重定向到 list 操作 :def index = { redirect(action:list,params:params) }。用清单 8 中的代码替换这个代码:

清单 8. 启动 HTTP 方法

def index = {   switch(request.method){    case "POST":     render "Create\n"     break    case "GET":     render "Retrieve\n"     break    case "PUT":     render "Update\n"     break    case "DELETE":     render "Delete\n"     break   } }

如清单 9 所示,使用 cURL 来验证 switch 语句运行正常:

清单 9. 全部四个 HTTP 方法都使用 cURL

$ curl --request POST  http://localhost:9090/trip/airport Create $ curl --request GET http://localhost:9090/trip/airport Retrieve $ curl --request PUT http://localhost:9090/trip/airport Update $ curl --request DELETE http://localhost:9090/trip/airport Delete

实现 GET

由于您已经知道如何返回 XML 了,实现 GET 方法就应该是小菜一碟了。但有一点需要注意。对 http://localhost:9090/trip/airport 的 GET 请求应该返回一个机场列表。而对 http://localhost:9090/trip/airport/den 的 GET 请求应该返回 IATA 代码为 den 的一个机场实例。 要达到这个目的,必须建立一个 URL 映射。

在文本编辑器中打开 grails-app/conf/UrlMappings.groovy。默认的 /$controller/$action?/$id? 映射看起来应该很熟悉。URL http://localhost:9090/trip/airport/show/1 映射到了 AiportController 和 show 操作,而 params.id 值被设置成 1。操作和 ID 结尾的问号说明 URL 元素 是可以选择的。

如清单 10 所示,向将 RESTful 请求映射回 AirportController 的 static mappings 块添加一行。 由于还没有在其他控制器中实现 REST 支持,所以我暂时对控制器进行了硬编码。稍候可能会用 $controller 来替代 URL 的 airport 部分。

清单 10. 创建一个自定义 URL 映射

class UrlMappings {    static mappings = {     "/$controller/$action?/$id?"{       constraints { // apply constraints here       }      }      "/rest/airport/$iata?"(controller:"airport",action:"index")     "500"(view:''/error'')    } }

精通Grails: RESTful Grails(8)

时间:2011-07-29 IBM Scott D

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