快速业务通道

使用sqlRest将数据库转换为REST风格的Web服务 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
资源,sqlRest 会通过映射将这四种资源暴露为 REST 风格的 Web 服务。我们也会发现,数据库中每个表必须有一个 primary key 的定义,这就是资源的唯一标识符。这里我们就了解到 sqlRest 的数据库配置,通过这样简单的配置和 sqlrest 的 Servlet,hpersonic 数据库中的数据就被映射成为 Web 上的具有唯一 URL 的 Rest 资源。请特别注意 Item 表的定义,它定义了 2 个字段的组合作为 primary key,我们可以通过 http://localhost:8080/sqlrest/ITEM/1 来查看 INVOICEID = 1 的 Invoice 中的所有 Item:

图 6. INVOICEID 为 1 的 Invoice 中的所有 Item 资源

由于 sqlRest 目前版本的尚不是很完善,虽然数据库的定义中主键可以包含多个字段,但是在解析参数的时候,只会将参数关联到主键中第一个字段的值,例如即使我们使用 http://localhost:8080/sqlrest/ITEM/1/0 希望能够返回 id 为 1 的 incovice 中 id 为 0 的 Item,但是结果仍然和 图 6 相同。因为 sqlRest 忽略了后面的参数。如果需要,您可以通过修改 sqlRest 源码,使之支持这样的 URL 来通过多参数更为精确的定位数据库中的资源。

在我们的 Web 2.0 实践中,我们使用了形如 http://localhost:8080/sqlrest/INVOICE1/ITEM/0 这样的 URL 来能够更好的表达我们的意思,但是 REST 并没有强制要求 URL 的定义和参数的定义形式,REST 不是规范,也不是标准,只是一种设计风格。在我们的实践中我们觉得这样的 URL 能够更好的表达资源的含义,也有利于服务器端的解析。

使用sqlRest将数据库转换为REST风格的Web服务(4)

时间:2011-02-15 IBM 赵勇

Rest 服务的测试

到目前为止,我们只对 sqlRest 的 Rest 服务进行了基于浏览器的 GET 资源的测试,我们知道一个 Rest 服务将会实现 GET,DELETE,UPDATE,CREATE 四种类型的接口,我们如何来测试这些接口呢?我们又如何确定 sqlRest 能自动的将这些接口和对数据库的操作 (CRUD) 映射起来了呢 ? 视具体项目的情况,我们有多种的选择。

最简单的 Java 测试代码

最简单的情况下,我们只需要使用 JDK 提供的 HTTP 相关的 API 来编写 Java 代码作为 Rest 客户端,此时您无需额外的工具或者 jar 包,这主要会使用到 URL 和 HttpURLConnection 类。读者可以参考清单 2 中的示例代码。

清单 2:使用简单的 Java 代码测试 REST 服务

URL url= new URL( “ http://localhost:8080/sqlrest ” );  HttpURLConnection con = (HttpURLConnection)url.openConnection();  con.setRequestMethod("GET");  con.connect();  InputStream in= con.getInputStream();   byte[] b= new byte[1024];  int result= in.read(b);  while( result!=-1){   System.out.write(b,0,result);   result= in.read(b);  }

sqlRest 的源码中提供了一个 RestClient 类 ( 位于 rest.client 包 ),该类是一个封装了很好的 REST 服务 Java 客户端,我们只要稍作修改就能将该 REST 服务的输出返回到字符串,而不是仅仅打印在控制台。

Poster,无需写代码的测试

如果不愿意编写测试代码,我们也可以使用一些工具来帮助测试 REST 服务。 Poster 就是这样一个工具,它是一个 Firefox 插件,我们可以从以下的 URL 获取 Poster 的安装下载:https://addons.mozilla.org/zh-CN/firefox/addon/2691 。安装后重新启动 Firefox,从“ View - >SideBar - >Poster ”菜单启动该插件,我们就可以看见如图 7 的界面,该工具简单易用,我们可以轻松的发送出 REST 测试报文并观察其输出。

图 7. Firefox Poster 使用示例

通过使用 FireFox Poster 插件,您可以发出各种各样的 HTTP 请求,从而达

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