我正在寻找一种简单的方法来调试 RESTful 服务。例如,大多数 Web 应用程序都可以使用您的普通 Web 浏览器进行调试。不幸的是,同一个浏览器不允许我测试 HTTP PUT、DELETE,在某种程度上甚至是 HTTP POST。
我不希望自动化测试。我想通过快速的健全性检查来运行新服务,理想情况下不必编写我自己的客户端。
使用现有的“REST 客户端”工具,可以轻松检查请求和响应,例如RESTClient。
在我的公司,我们使用各种不同的工具和方法来测试 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 服务的某些部分的启发,其中作者表明,Web 服务和 Web 应用程序之间的界线可能不需要像通常假设的那样牢固和严格。
我们使用Restlet框架将功能测试编写为Groovy闭包,并使用测试运行程序 Groovy 脚本运行测试。这很有用,因为测试可以是有状态的,可以相互构建,并在适当的时候共享变量。我们发现 Restlet 的 API 简单直观,可以轻松编写快速 HTTP 请求和测试响应,并且在 Groovy 中使用时更容易。(我希望尽快在我们的博客上分享这项技术,包括测试运行脚本。)
Postman是一个 Google Chrome 扩展程序,可能会有所帮助。
多年后编辑:如果 Chrome 扩展链接被更改,URL 的网站也是:www.postman.com
我发现 RequestBin 对于调试 REST 请求很有用。发布到唯一的 URL 并更新/显示请求数据。当其他工具不可用时,可以在紧要关头提供帮助。
您可以使用 fiddler 的Composer来调试restful 服务..
2013 年 9 月 12 日更新 JD:Rest Builder现在称为Composer。
cURL
工作得很好。
我最终选择了POSTMAN
它支持我能想到的所有 REST 功能,而且 UI 绝对出色。唯一的缺点是它需要 Chrome。
我正在使用 Soap UI 来测试我的 REST API。
它比任何其他工具都更完整:
我不为 SmartBear 工作。在将它用于 SOAP WebServices 时,我已经是 SoapUI 的忠实粉丝了。
除了在 Peter Hilton 的回复中使用其中一种工具之外,我不得不说,使用 LWP 或其他类似工具编写测试脚本可能是您唯一的选择。您可以通过打开一个套接字、发送一个原始 HTTP 请求并检查您得到的回报来绕过 LWP 的使用。但据我所知,这类领域缺乏测试工具——大多数人主要从网站开发人员的角度看待这个问题空间,对他们来说,浏览器就足够了一个测试平台.
我使用 restclient,可从Google Code获得。这是一个简单的 Java Swing 应用程序,它支持所有 HTTP 方法,并允许您完全控制 HTTP 标头、连接等。
我倾向于使用带有一个不错的 REST 客户端的Jersey来为 RESTful 资源编写单元测试。好消息是,如果您使用 JAX-RS 实现 RESTful 资源,那么 Jersey 客户端可以重用实体提供程序,例如 JAXB/XML/JSON/Atom 等 - 因此您可以在服务器端重用与您相同的对象在客户端单元测试中使用。
例如,这里有一个来自Apache Camel 项目的单元测试用例,它从 RESTful 资源中查找 XML 有效负载(使用 JAXB 对象端点)。resource(uri) 方法在这个基类中定义,它只使用 Jersey 客户端 API。
例如
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);
如果您想要具有相同目的的免费工具并具有多部分表单数据提交的附加功能,请访问http://code.google.com/a/eclipselabs.org/p/restclient-tool/
Firefox 的RESTClient插件可以使用方法、参数、标头等发送不同的请求。
你们应该检查firefox 的海报扩展,它足够简单和有用:)
因为它在这里完全消失了: https ://luckymarmot.com/paw
一分钱一分货...