<b>1.8 rest调试工具</b>
在上节中,我们不但领略了rest请求处理流程,还对ide中设置断点、观察服务器端运行时变量有了了解。本节将讲述如何在客户端对rest服务进行调试。为何需要在客户端调试rest服务呢?因为在rest开发过程中,需要对请求资源地址、资源所支持的数据媒体类型和返回值类型等进行调试和测试。因此,掌握客户端的调试工具是开发优秀的rest服务的前提。下面将介绍这一领域常用的rest请求工具,以使读者更进一步地熟悉rest开发和调试。
<b>1.8.1 命令行调试工具</b>
curl(http://curl.haxx.se)是非常易用、强大的基于url标准(rfc 3986)的命令行工具,通过命令行即可完成多种协议(比如http)的请求,并可以将请求的响应信息输出在终端/控制台上,因此对于调试和测试rest请求非常方便。
httpie(http://httpie.org)是和curl非常类似的命令行工具,相比curl有更良好的用户体验。
命令行工具的优点是简单方便,缺点是没有图形化界面。下面将介绍几款基于浏览器的扩展插件作为rest客户端调试工具的使用情况。
<b>1.8.2 基于浏览器的图形化调试插件</b>
curl功能强大、易于在自动化脚本中使用,但curl的每个请求都要通过码字来完成、没有图形界面的特点并不适于所有读者。下面将介绍几种基于浏览器的图形化调试插件,以方便读者在开发和测试rest服务时选择使用。基于chrome浏览器的rest插件有很多,本节将介绍其中的3种。
1. simple rest client插件
simple rest client插件是基于chrome浏览器的扩展,安装该插件后chrome窗口的右上方会出现该插件的图标,以方便使用。该项目的地址是https://github.com/jeremys/simple-rest-client-chrome-extension,插件的下载地址是http://chrome.google.com/extensions/detail/fhjcajmcbmldlhcimfajhfbgofnpcjmb()。simple rest client插件的界面如图1-2所示。
图1-2 simple rest client插件示意图
simple rest client插件的特点是简单易用,其界面分为请求信息录入和响应信息展示上下两部分。录入部分包括url、http请求方法和请求头3部分,见图1-2中上方的数字标识1~3。其中,http请求方法支持http的标准方法get、post、put、delete、head和options,headers部分需要完全手工输入。响应信息部分包括响应状态、响应头和响应实体3部分。其中,headers部分展示http请求交互的响应头信息,data中展示的是响应实体信息,语法高亮显示,见图1-2中下方的数字标识4~6。simple rest client插件总体上说是麻雀虽小,五脏俱全,但功能相比后面要讲的插件不够强大。
2. advance rest client插件
advance rest client可以看作是simple rest client的增强版。该项目的地址是https://code.google.com/p/chrome-rest-client,插件的下载地址是https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo。界面如图1-3所示。
图1-3 advance rest client插件示意图
advance rest client提供更为丰富的功能,除了simple rest client插件具备的输入和输出(见图1-3中的数字标识),advance rest client还支持带参数的请求和提交表单等更完整的请求功能。数据格式上,支持原生的格式(raw)、xml格式的响应(response)信息。advance rest client支持对请求地址的保存和对最近使用地址的记忆,如果调试中需要多次测试同一个资源地址,可以将其保存下来为以后使用;而多个这样的地址也可以按照项目分别保存,方便区分使用。
3. postman-rest client插件
postman-rest client是基于simple rest client源代码编写的专门针对rest的插件。该项目的地址是https://github.com/a85/postman-chrome-extension,插件的下载地址是http://www.getpostman.com。界面如图1-4所示。
图1-4 postman-rest client插件示意图
postman-rest client提供的功能更多,除了advance rest client具有的输入和输出(见图1-4的数字标识部分),还可以发起基于安全的请求。请求方法不仅包括http的标准方法,还包括webdav标准的方法。其响应信息的展示和支持的格式也更丰富。如果读者希望深入和细致地调试rest服务,postman-rest client要比其他插件更合适。可以说3个插件的复杂度和功能性是递增的,使用哪一个要看读者的需求。类似的chrome插件不胜枚举,如果有兴趣,可以通过https://chrome.google.com/webstore/category/extensions访问chrome的网上商店,搜索更多的chrome插件。
4. firefox插件
相对于chrome浏览器,firefox的rest插件功能类似,其中常用的插件有rest-easy和restclient。rest-easy的项目地址是https://github.com/nathan-osman/rest-easy,restclient的项目地址是http://restclient.net。类似的firefox插件很多,读者如果有兴趣,可以在firefox浏览器中录入about:addons进入firefox的扩展,搜索更多的相关插件。