webservice---restful webservice的介绍与测试工具

简介: 就连我院的线上教学支持系统都打算分离出核心数据(即学生和课程的信息),通过REST风格的Web服务来提供这些中心数据,支持其他功能(例如课程论坛、作业发布和提交等)的实现。

就连我院的线上教学支持系统都打算分离出核心数据(即学生和课程的信息),通过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 :POST数据内容
  • -X/–request :指定请求的方法(使用-d时就自动设为POST了)
  • -H/–header :设定header信息
  • -I/–head:只显示返回的HTTP头信息

一个最简单的例子,资源的获取,不需要强行指定GET方法,直接在curl后面跟上URL即可:

[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服务端,另外还提供了单元测试的功能。介绍的三种工具中,我最喜欢的还是这款了,尤其是它的缩排高亮功能非常实用,方便查看。


目录
相关文章
|
8月前
|
监控 安全 测试技术
《Eolink 征文活动- -RESTful接口全解测试-全方位了解Eolink-三神技超亮点》
《Eolink 征文活动- -RESTful接口全解测试-全方位了解Eolink-三神技超亮点》
100 0
|
8月前
|
JSON 测试技术 API
pyhttptest 与 RESTful API 测试的完全指南
现在,无论是开发还是使用服务,我们每个人都面临着 REST API 的挑战。同时,我们正处于微服务的流行时代,我们将业务逻辑拆分为多个独立的小服务。这些服务大多遵循 RESTful 原则,并使用 JSON 格式进行通信,因为其简单性使其成为最广泛使用的格式。
|
8月前
|
缓存 Java 关系型数据库
Spring Boot实现RESTful接口架构实战(包括REST的讲解、定义、REST服务测试)
Spring Boot实现RESTful接口架构实战(包括REST的讲解、定义、REST服务测试)
227 0
|
Java 测试技术 API
Spring Boot之Restful服务与Swagger框架:构建易用的API文档与测试工具
本篇详细介绍了如何在Spring Boot应用中构建Restful服务,并结合Swagger框架实现自动生成API文档和提供API测试工具的方法。通过编写Controller类定义Restful API,以及配置Swagger框架,读者可以轻松地生成API文档和进行API测试,从而提升开发效率和项目可维护性。该博文帮助读者了解了如何使用Spring Boot和Swagger框架来简化API文档编写和测试的过程,为Web应用开发提供了有力的支持。
281 2
Spring Boot之Restful服务与Swagger框架:构建易用的API文档与测试工具
|
XML JSON JavaScript
如何使用 API Tester 移动应用程序测试 CRUD RESTful API
如何使用 API Tester 移动应用程序测试 CRUD RESTful API
604 0
|
JSON JavaScript 前端开发
技术分享 | 一步一步学测试平台开发-Vue restful请求
技术分享 | 一步一步学测试平台开发-Vue restful请求
|
JSON 前端开发 JavaScript
技术分享 | 一步一步学测试平台开发-Vue restful请求
一般在构建应用时需要访问后端的 API 接口获取后端数据并展示。做这件事的方法有很多种(比如 axios,vue-resource,fetch-jsonp),使用 promise 的 HTTP 客户端 axios 是其中非常流行的一种方式。axios 也支持 RESTful 请求调用规范。 promise 是一个用来传递异步操作信息的对象,主要是用来解决回调的问题。 ## axios介绍 a
|
JSON 前端开发 JavaScript
技术分享 | 一步一步学测试平台开发-Vue restful请求
一般在构建应用时需要访问后端的 API 接口获取后端数据并展示。做这件事的方法有很多种(比如 axios,vue-resource,fetch-jsonp),使用 promise 的 HTTP 客户端 axios 是其中非常流行的一种方式。axios 也支持 RESTful 请求调用规范。 promise 是一个用来传递异步操作信息的对象,主要是用来解决回调的问题。 ## axios介绍 a
|
JSON 前端开发 Java
Spring Boot构建RESTful API与单元测试
Spring Boot构建RESTful API与单元测试
502 0
Spring Boot构建RESTful API与单元测试
|
JSON 前端开发 Java
Spring Boot 2.x基础教程:构建RESTful API与单元测试
Spring Boot 2.x基础教程:构建RESTful API与单元测试
379 0
Spring Boot 2.x基础教程:构建RESTful API与单元测试
下一篇
开通oss服务