如何调试RESTful服务?

时间:2008-10-03 04:47:59

标签: debugging http rest

我正在寻找一种简单的方法来调试RESTful服务。例如,大多数Web应用程序都可以使用普通的Web浏览器进行调试。不幸的是,同样的浏览器不允许我测试HTTP PUT,DELETE,甚至在某种程度上测试HTTP POST。

我不打算自动化测试。我希望通过快速的健全性检查来运行新服务,理想情况下无需编写自己的客户端。

17 个答案:

答案 0 :(得分:34)

使用现有的“REST客户端”工具,可以轻松检查请求和响应,例如RESTClient

答案 1 :(得分:15)

在我的公司,我们使用各种不同的工具和方法来测试RESTful服务:

  • 我们编写cURL个脚本 - 本质上是保存在文件中的单个命令。每种方法每个资源一个文件。对于PUT和POST,我们通常会有包含表示的文件与cURL脚本一起发送。例如,对于邮箱资源,我们可能有一个名为mailbox_post.cmd的文件,其中可能包含行curl -v -X POST -u username -H 'Content-Type:application/xml' -d @mailbox_post.xml http://service/mailbox。我们喜欢这种方法,因为我们最终构建了一组测试,这些测试可以批量运行,或至少在测试人员之间传递,并用于回归测试。

  • 我们使用cURL和RESTClient进行临时测试

  • 默认情况下,我们有服务提供服务XHTML,因此它可以浏览,并添加表单资源,因此该服务实际上可以使用浏览器部分或完全测试。这部分受到RESTful Web Services部分内容的启发,其中作者表明,Web服务和Web应用程序之间的界限可能不需要像通常所假设的那样严格和严格。

  • 我们使用Groovy框架将功能测试编写为Restlet闭包,并使用测试运行器Groovy脚本运行测试。这很有用,因为测试可以是有状态的,相互构建,并在适当时共享变量。我们发现Restlet的API简单直观,易于编写快速HTTP请求并测试响应,在Groovy中使用时更加容易。 (我希望尽快在our blog上分享这项技术,包括测试跑步者脚本。)

答案 2 :(得分:12)

Google Chrome扩展程序

Postman可能会有所帮助。

答案 3 :(得分:8)

我发现RequestBin对调试REST请求很有用。发布到唯一的URL并更新/显示请求数据。当其他工具不可用时,可以提供帮助。

https://requestbin.com/

答案 4 :(得分:5)

如果您运行OS X Leopard,我发现有用的工具:

HTTP Client

这是一个非常简单的GUI程序,允许您对资源进行http请求并查看响应。

答案 5 :(得分:4)

cURL效果很好。

答案 6 :(得分:4)

您可以使用fiddler的Composer来调试restful services ..

更新了JD 12 sep 2013: Rest Builder 现在称为 Composer

答案 7 :(得分:3)

我最终选择了POSTMAN

它支持我能想到的所有REST功能,并且UI非常出色。唯一的缺点是它需要Chrome。

答案 8 :(得分:2)

Firefox的

RESTTest(附加组件)。 IE的Fiddler

答案 9 :(得分:2)

我正在使用Soap UI来测试我的REST API。

它比任何其他工具更完整:

  • 精确的调试请求和响应
  • 自动化测试
  • 所有基于GUI的
  • 属性和属性转移以参数化您的测试
  • 条件测试
  • 性能测试

我不是在为SmartBear工作。 在将它用于SOAP WebServices时,我已经是SoapUI的忠实粉丝了。

My SoapUI REST Project

答案 10 :(得分:0)

Firefox有RESTClient个插件,可以通过方法,参数,标题等发送不同的请求。

答案 11 :(得分:0)

你们应该查看firefox的poster扩展名,它的使用非常简单实用:)

答案 12 :(得分:0)

如果您希望免费工具用于同一目的,并提供多部​​分表单数据提交的附加功能,请访问http://code.google.com/a/eclipselabs.org/p/restclient-tool/

答案 13 :(得分:0)

我倾向于使用Jersey为RESTful资源编写单元测试,它带有一个不错的REST客户端。好的是,如果使用JAX-RS实现RESTful资源,那么Jersey客户端可以重用实体提供程序,例如JAXB / XML / JSON / Atom等等 - 这样您就可以在服务器端重用相同的对象了用于客户端单元测试。

例如来自here is a unit test caseApache Camel project,它从RESTful资源中查找XML有效负载(使用JAXB对象端点)。资源(uri)方法在this base class中定义,它只使用Jersey客户端API。

e.g。

clientConfig = new DefaultClientConfig();
client = Client.create(clientConfig);

resource = client.resource("http://localhost:8080");
// lets get the XML as a String
String text = resource("foo").accept("application/xml").get(String.class);

答案 14 :(得分:0)

我使用了Google Code提供的restclient。它是一个简单的Java Swing应用程序,它支持所有HTTP方法,并允许您完全控制HTTP头,连接等。

答案 15 :(得分:0)

除了使用Peter Hilton的回复中的一个工具之外,我不得不说用LWP或类似工具编写测试脚本可能是您唯一的选择。您可以绕过LWP的使用,只需打开一个套接字,发送原始HTTP请求并检查您获得的回报。但据我所知,这类领域缺乏测试工具 - 大部分都是从网站开发人员的角度来看这个问题空间,而对于他们来说浏览器就足够了测试平台

答案 16 :(得分:0)

因为它在这里完全缺失: https://luckymarmot.com/paw

值得一分钱......