测试RESTful Web Services的三种方法(推荐Simple REST Client)
来源:互联网 发布:淘宝号怎么升级为钻号 编辑:程序博客网 时间:2024/06/05 14:10
测试RESTful Web Services的三种方法
如今网站搞个开放API,弄个RESTful Web Services似乎早不是新鲜事了。尤其在Twitter、Facebook、Google等先行者的推动下,获取其他网站的资源并进行Mashup变得越来越普遍。如今在SNS大行其道的日子里,你不搞个“推荐该内容到人人网/开心网/新浪微博”这样的链接,你都不好意思出去见人说“我是做网站的”。
就连我院的线上教学支持系统都打算分离出核心数据(即学生和课程的信息),通过REST风格的Web服务来提供这些中心数据,支持其他功能(例如课程论坛、作业发布和提交等)的实现。这样做的好处自然是分离的数据可以再提供给今后更多的服务使用,比起传统的全部使用本地数据库的方法减少了冗余和错误的产生。而其缺点在于加大了开发难度,以前可以很轻松的诸如数据表中外键的功能全部得从第三方资源实现,一定程度上降低了网站的运行效率。同时,进行REST的开发和测试也变得不那么直接了。虽然各种语言都有HTTP请求相关的类库,但是本着不重复发明轮子的精神,本文介绍了几种方便的测试RESTful Web Services的工具。
REST简单介绍
所谓REST,是Representational State Transfer,这个词汇的中文翻译很不统一,而且很晦涩,有叫“具象状态传输”,有叫“表象化状态转变”,等等。通俗地讲,REST风格的Web服务,是通过一个简洁清晰的URI来提供资源链接,客户端通过对URI发送HTTP请求获得这些资源,而获取和处理资源的过程让客户端应用的状态发生改变(不像那些远程过程调用那么直接地发生改变)。一般常用的对资源进行CRUD(Create, Read, Update 和 Delete)的四种HTTP方法分别是POST, GET, PUT, DELETE。一般的Web浏览器基本只会用到GET和POST两种方法,但是根据RFC 2616,HTTP请求方法除了前面提到的四种还有OPTIONS, HEAD, TRACE, CONNECT,一共8种。REST源于Roy Fielding在2000年的博士论文,而关于RESTful Web服务最著名的书便是本文题图的《RESTful Web Services》。顺便提一句,我只是说说而已,这两个东西我都没看过,估计看了也看不懂。
RESTful Web Services测试工具推荐
不了解精深的理论没关系,我们只要会使用就行了。命令行控的最爱:cURL
cURL是一个很强大的支持各种协议的文件传输工具,用它来进行RESTful Web Services的测试简直是小菜一碟。这个工具基本上类Unix操作系统(各种Linux、Mac OS X)都自带了,而Windows用户就得去额外下载了。cURL的命令参数非常多,一般用于RESTful Web Services测试要用到下面四种参数:
- -d/–data <data>:POST数据内容
- -X/–request <command>:指定请求的方法(使用-d时就自动设为POST了)
- -H/–header <line>:设定header信息
- -I/–head:只显示返回的HTTP头信息
[code light=”true”]
Clippit@Clippit-PC ~
$ curl http://dayanjia.com/api/user/101250001/
{"id":"student1","name":"\u5b66\u751f\u4e00","num":"101250001",
"grade":"20101","courses":[{"id":1,"name":"\u8bfe\u7a0b\u4e00",
"active":false,"identity":0,"instructors":[{"id":"teacher1","na
me":"\u8001\u5e08\u4e00"}]},{"id":2,"name":"\u8bfe\u7a0b\u4e8c"
,"active":true,"identity":0,"instructors":[{"id":"teacher2","na
me":"\u8001\u5e08\u4e8c"}]},{"id":3,"name":"\u8bfe\u7a0b\u4e09"
,"active":true,"identity":0,"instructors":[{"id":"teacher3","na
me":"\u8001\u5e08\u4e09"}]}]}
[/code]
再看删除远程的一条记录,并返回HTTP头检查操作是否成功:
[code light=”true”]
Clippit@Clippit-PC ~
$ curl -I -X DELETE http://dayanjia.com/api/course/1/
HTTP/1.1 200 OK
Date: Thu, 12 Aug 2010 16:50:46 GMT
Server: LiteSpeed
Connection: close
X-Powered-By: PHP/5.2.14
Content-Type: text/html
Content-Length: 0
[/code]
需要指出的是,如果使用-d或者其他某些参数就不能直接看到返回的HTTP头了,即不能将-d和-I同时使用。解决的办法是采用-D/--dump-header
参数并指定一个文件名,将header的数据保存下来查看。
浏览器控的最爱:各种插件
既然普通的浏览器不支持除了GET和POST以外的操作,查看和发送HTTP header都很苦难,那就让插件来扩展它的功能吧!让人们不离开浏览器就能进行各种测试,也是一种非常方便的选择。如果你喜欢下面介绍的插件,不妨到相应的页面上给它们评星以支持作者的劳动。Chrome下有一个Simple REST Client插件,提供了一个简单的表单进行各种HTTP操作,并可以看到返回的信息。
Chrome下的插件显得有些寒碜,那么同样深受开发者喜爱的Firefox也有一款名为RESTClient的插件,这款插件由国人开发,功能上支持Basic和OAuth的登录header发送,并且对于返回的XML数据还可以高亮显示。
咖啡控的最爱:RESTClient
这里的咖啡是什么,你懂的。名字同样很朴素,这是一个用Java写的测试小工具,项目主页上提到它有命令行和GUI两种版本。为了方便操作我们选择GUI版本来看看。既然是一款软件,显然就比刚才介绍的浏览器插件功能更加强大。它支持应答正文的JSON和XML缩排和高亮,还可以一键搭建一个RESTful服务端,另外还提供了单元测试的功能。介绍的三种工具中,我最喜欢的还是这款了,尤其是它的缩排高亮功能非常实用,方便查看。- 测试RESTful Web Services的三种方法(推荐Simple REST Client)
- 测试RESTful Web Services的三种方法
- 使用 Rest-assured 测试 Restful Web Services
- 就是这么简单!使用Rest-assured 测试Restful Web Services
- 就是这么简单!使用Rest-assured 测试Restful Web Services
- Java Restful Web Services (三)——方法注解
- RESTful Web Services之Struts2 REST
- REST Client自动化测试RESTful API
- Oracle REST Data Services (ORDS) 发布 RESTful Web Services 教程
- Rest风格的Web Services
- Windows Communication Foundation and RESTful Web Services Primer(教你制作rest wcf)
- Simple REST Client
- Loadrunner接口测试常用的方法(Web Services)
- java端RESTful web services的几种实现方式
- java端RESTful web services的几种实现方式
- Jersery——RESTful Web Services in Java,RESTful服务,Jersey+Spring实现REST服务调用
- jax-rs(Java API for RESTful Web Services) 实践教程 之五 —— 注入全局变量 和 rest的生命周期
- Advanced Rest Client调试RESTFul
- Latex 文献里面的人名中带有声调(一声,二声)如何输入?
- js获取表单对象的方法
- GIS数据分享
- 几种数据存储结构详解
- 一维中值、均值、高斯滤波的Matlab实现
- 测试RESTful Web Services的三种方法(推荐Simple REST Client)
- Dom4j中文异常处理:Invalid byte 2 of 2-byte UTF-8 sequence
- 关于linux SCSI 子系统
- C#对文件的操作
- Hadoop中两表JOIN的处理方法
- 安装程序无法创建新的系统分区,也无法定位现有系统分区
- hdu 1358 Period
- 求最大最小中间数的其他方法
- 这是一篇测试文章