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