快速业务通道

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

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

该映射确保了所有以 /rest 开头的 URI 都被传送到了 index 操作(这样就不需要协商内容了)。它 还意味着您可以检查 params.iata 存在与否,以此来决定是应该返回列表还是一个实例。

按清单 11 所示的方法,修改 index 操作:

清单 11. 从 HTTP GET 返回 XML

def index = {   switch(request.method){    case "POST":  //...    case "GET":     if(params.iata){render Airport.findByIata(params.iata) as XML}     else{render Airport.list() as XML}     break    case "PUT":  //...    case "DELETE": //...   } }

在 Web 浏览器中输入 http://localhost:9090/trip/rest/airport 和 http://localhost:9090/trip/rest/airport/den,确认自定义 URL 映射已经就位。

通过 HTTP 方法实现的自定义 URL 映射

您可以使用不同的方法来建立 RESTful URL 映射。您可以依照 HTTP 请求将请求传送到具体操作。例 如,按照如下的方法可以将 GET、PUT、POST 和 DELETE 映射到已经存在的相应 Grails 操作:

static mappings = {    "/airport/$id"(controller:"airport"){      action = [GET:"show", PUT:"update", DELETE:"delete", POST:"save"]    } }

实现 DELETE

添加 DELETE 支持与添加 GET 支持的差别不大。但在这里,我仅需要通过 IATA 代码逐个删除机场。 如果用户提交了一个不带有 IATA 代码的 HTTP DELETE 请求的话,我将返回一个 400 HTTP 状态码 Bad Request。如果用户提交了一个无法找到的 IATA 代码的话,我将返回一个常见的 404 状态码 Not Found 。只有删除成功了,我才会返回标准的 200 OK。

将清单 12 中的代码添加到 index 操作中的 DELETE case 中:

清单 12. 对 HTTP DELETE 做出响应

def index = {   switch(request.method){    case "POST": //...    case "GET": //...    case "PUT": //...    case "DELETE":     if(params.iata){      def airport = Airport.findByIata(params.iata)      if(airport){       airport.delete()       render "Successfully Deleted."      }      else{       response.status = 404 //Not Found       render "${params.iata} not found."      }     }     else{      response.status = 400 //Bad Request      render """DELETE request must include the IATA code           Example: /rest/airport/iata      """     }     break   } }

精通Grails: RESTful Grails(9)

时间:2011-07-29 IBM Scott Davis

首先,试着删除一个已知确实存在的机场,如清单 13 所示:

清单 13. 删除一个存在的机场

Deleting a Good Airport</heading> $ curl --verbose --request DELETE http://localhost:9090/trip/rest/airport/lga > DELETE /trip/rest/airport/lga HTTP/1.1 < HTTP/1.1 200 OK Successfully Deleted.

然后,试着删除一个已知不存在的机场,如清单 14 所示:

清单 14. 试着 DELETE 一个不存在的机场

$ curl --verbose --request DELETE  http://localhost:9090/trip/rest/airport/foo > DELETE /trip/rest/airport/foo HTTP/1.1 < HTTP/1.1 404 Not Found foo not found.

最后,试着发出一个

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