快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
不带有 IATA 代码的 DELETE 请求,如清单 15 所示:

清单 15. 试着一次性 DELETE 所有机场

$ curl --verbose --request DELETE  http://localhost:9090/trip/rest/airport > DELETE /trip/rest/airport HTTP/1.1 < HTTP/1.1 400 Bad Request DELETE request must include the IATA code Example: /rest/airport/iata

实现 POST

接下来您的目标是要插入一个新的 Airport。创建一个如清单 16 所示的名为 simpleAirport.xml 的 文件:

清单 16. simpleAirport.xml

<airport>   <iata>oma</iata>   <name>Eppley Airfield</name>   <city>Omaha</city>   <state>NE</state>   <country>US</country>   <lat>41.3019419</lat>   <lng>-95.8939015</lng> </airport>

如果资源的 XML 表示是扁平结构(没有深层嵌套元素),而且每一个元素名称都与类中的一个字段名 称相对应的话,Grails 就能够直接从 XML 中构造出新类来。XML 文档的根元素是通过 params 寻址的, 如清单 17 所示:

清单 17. 响应 HTTP POST

def index = {   switch(request.method){    case "POST":     def airport = new Airport(params.airport)     if(airport.save()){      response.status = 201 // Created      render airport as XML     }     else{      response.status = 500 //Internal Server Error      render "Could not create new Airport due to errors:\n  ${airport.errors}"     }     break    case "GET":  //...    case "PUT":  //...    case "DELETE": //...   } }

精通Grails: RESTful Grails(10)

时间:2011-07-29 IBM Scott Davis

XML 一定要使用扁平结构,这是因为 params.airport 其实是一个散列(Grails 是在后台将 XML 转 换成散列的)。这意味着您在对 Airport 使用命名参数构造函数 — def airport = new Airport (iata:"oma", city:"Omaha", state:"NE")。

要测试新代码,就要使用 cURL 来 POST simpleAirport.xml 文件,如清单 18 所示:

清单 18. 使用 cURL 来发出一个 HTTP POST

$ curl --verbose --request POST -- header "Content-Type: text/xml" --data     @simpleAirport.xml http://localhost:9090/trip/rest/airport > POST /trip/rest/airport HTTP/1.1 > Content-Type: text/xml > Content-Length: 176  > < HTTP/1.1 201 Created < Content-Type: text/xml; charset=utf-8 <?xml version="1.0" encoding="utf-8"?><airport id="14">   <arrivals>    <null/>   </arrivals>   <city>Omaha</city>   <country>US</country>   <departures>    <null/>   </departures>   <iata>oma</iata>   <lat>41.3019419</lat>   <lng>-95.8939015</lng>   <name>Eppley Airfield</name>   <state>NE</state> </airport>

如果 XML 比较复杂的话,则需要解析它。例如,还记得您先前定义的自定义 XML 格式么?创建一个 名为 newAirport.xml 的文件,如清单 19 所示:

清单 19. newAirport.xml

<airport iata="oma"&g

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