Java开发2.0 - 通过CouchDB和Groovy的RESTClient实现REST - 编程入门网
equestContentType: JSON,
body: [officer: "Anthony Richards",
location: "Walmart Parking lot",
vehicle_plate: "Delaware 4433-OP",
offense: "Parked in non-parking space",
date: "2009/02/01"])
assert response.data.ok == true : "response from server wasn''t ok"
assert response.data.id == "${id}" : "the returned ID didn''t match"
每次通过 RESTClient 发出 PUT 时,我都断言 JSON 应答的 ok 值为 TURE ,并且验证是否存在 id 值。注意在清单 4 中,我没有创建 UUID,而是使用了 当前的时间 — 并不是非常简单的技巧,但我已经不再满足于使用简单的交汇点 。 在 CouchDB 中成功创建了新文档之后,它会返回一个包含 UUID 和修订 ID 的 JSON。举例来说,该应答表示我在清单 4 中验证的 JSON:
您的 id 和 rev 值肯定不一样。注意,我可以通过发出 response.data.id 这样的调用来捕获 id 值。 在 CouchDB 中,它将通过修订来跟踪文档,因此您可以返回之前的文档版本 (通过修订 ID),这与 CVS 或 Subversion 中的方法极为类似。 CouchDB 中的视图 现在,我已经创建了一些停车罚单(或者,用 CouchDB 的术语来说是一些文 档),接下来可以在 CouchDB 中创建一些视图了。记住,视图就是实际的 MapReduce 函数;因此,您必须定义它们。在许多情况下,您都不需要 reduce 函数;map 函数可以帮助您完成大多数任务。正如其名,它是任务的映射。举例 来说,您可以映射希望过滤或查找的任何 “事物” 或方面。 我已经定义了两个罚单:一个由 Officer Ree 开示,而另一个是由 Officer Richards 发出的。举例来说,要查找 Officer Ree 开出的所有罚单,您可以编 写一个 map 函数来过滤相应的 officer 属性。然后,您可以将结果传递给 CouchDB 的 emit 函数。 使用 CouchDB 的管理接口:Futon 您可以通过 CouchDB 的 REST 式 API 或通过 CouchDB 的管理接口 Futon 来定义视图。Futon 仅仅是一个 Web 应用程序,可以从 http://localhost:5498/_utils/ 下载它。立即访问该位置(假定您已经跟随我 创建了数据库和一些文档),您应该能看到一个针对 parking_tickets 的简单 接口,如图 1 所示: 图 1. Futon 接口 Java开发2.0 - 通过CouchDB和Groovy的RESTClient实现REST(5)时间:2010-11-29 IBM Andrew Glover如果选择 parking_tickets 数据库,则随后可以在最右侧看到一个下拉列表 (Select view:)。通过选择 Custom query...来定义一个自定义视图,如图所 示: 图 2. Futon 的视图选择接口 现在,Futon 接口可允许您定义 map 函数和 reduce 函数。(您可能需要单 击 查看代码 链接)。在 Map 文本框中,定义如清单 5 所示的简单映射: 清单 5. CouchDB 中的简单的 map 函数
如您所见,清单 5 中的 map 函数是使用 JavaScript 定义的。它的作用是 通过文档的 officer 属性来过滤 CouchDB 数据库中的文档。特别需要说明的是 ,仅当警官的名称为 Kristen Ree 时,该函数才会传递一个文档给 emit。图 3 显示了在 Futon 中定义此函数的位置: 图 3. 创建一个 MapReduce 函数 接下来,您需要指定文档名称(输入 by_name)和视图名称(输入 officer_ree)。这些名称将作为 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |