快速业务通道

Java开发2.0 - 通过CouchDB和Groovy的RESTClient实现REST - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
这些依赖项并确保它们在您的类路径下。如果已经 下载了依赖项(比如说从之前的运行中),则 Grape 仍然会确保类路径下包含 适当的 JAR 文件。

通过 Groovy 简化 CouchDB 的 REST 风格

在可以在 CouchDB 中创建任意文档之前,您必须首先创建一个数据库。要创 建一个停车罚单数据库,可以通过 HTTPBuilder 的域相关语言(DSL)使用其 RESTClient 来发出一个 HTTP PUT,如清单 2 所示。(本文示例中的所有 Groovy 代码都可以从 下载 小节获得。)

清单 2. 创建一个 CouchDB 数据库

import static  groovyx.net.http.ContentType.JSON import groovyx.net.http.RESTClient @Grab(group=''org.codehaus.groovy.modules.http-builder'',  module=''http-builder'',    version=''0.5.0-RC2'') def getRESTClient(){   return new RESTClient("http://localhost:5498/") } def client = getRESTClient() def response = client.put(path: "pa***ng_tickets",      requestContentType: JSON, contentType: JSON) assert response.data.ok == true : "response from server  wasn''t ok"

CouchCB 应该会返回应答 {"ok":true}。如清单 2 所示,在 HTTPBuilder 中可以轻松地解析 JSON 并确保 ok 元素的值确实为 true。

接下来,我们需要创建一些文档,以便与停车罚单的主题保持一致。要建立 一个停车罚单模型,需要记住一些与罚单相关的方面。另外需要记住,由于它们 是警官将填写的实际表单,因此一些字段可以不填或者采用预定义的模式 — 考 虑交汇点与准确地点。

使用 HTTPBuilder,您可以通过 HTTP PUT 在 CouchDB 中创建一个文档(就 像在清单 2 中创建数据库一样)。由于 CouchDB 将处理 JSON 文档,因此您必 须遵循 JSON 的名称值格式。为此,在 Groovy 中创建一种类似于映射的数据结 构(HTTPBuilder 会将其转换为有效的 JSON)。如清单 3 所示:

清单 3. 通过 RESTClient创建一个 CouchDB 文档

response =  client.put(path: "pa***ng_tickets/1234334325", contentType:  JSON,      requestContentType: JSON,      body: [officer: "Kristen Ree",          location: "199 Baldwin Dr",          vehicle_plate: "Maryland 77777",          offense: "Parked in no pa***ng zone",          date: "2009/01/31"]) assert response.data.ok == true : "response from server  wasn''t ok" assert response.data.id == "1234334325" : "the returned ID  didn''t match"

Java开发2.0 - 通过CouchDB和Groovy的RESTClient实现REST(4)

时间:2010-11-29 IBM Andrew Glover

清单 3 完成了多项任务。首先,在为 CouchDB 文档发出 PUT 时,您必须分 配一个 UUID。CouchDB 可以为您分配这些值,或者您也可以自已管理它们。在 清单 3 中,我设定了一个值(1234334325);随后,该 UUID 将附加到 URL。 如果该 UUID 可用,则 CouchDB 会为它分配执行了 PUT 操作的文档。在 put 调用的 body 部分,注意为各名称指定相关值的方式,几乎与普通的映射无异。 举例来说,指定警官的名称为 Kristen Ree,而罚单的地点是 199 Baldwin Dr 。

清单 4 采用相同的技巧在 CouhDB 中创建了另外一个罚单:

清单 4. 另一个停车罚单

def id = new Date().time response = client.put(path: "pa***ng_tickets/${id}",  contentType: JSON,      r

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