如何debuggingRESTful服务?

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

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

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

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

  • 我们编写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 。 我们喜欢这种方法,因为我们最终构build了一批可以批量运行的testing,或者至less在testing人员之间传递,并用于回归testing。

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

  • 我们有服务默认提供XHTML,所以它是可浏览的,并添加表单资源,所以服务实际上是部分或全部使用浏览器进行testing的。 这部分受到了RESTful Web服务的某些部分的启发,其中作者表示,Web服务和Web应用程序之间的界限可能不需要像通常所假设的那样坚实和严格。

  • 我们使用Restlet框架编写functiontesting作为Groovy闭包,并使用testing运行器Groovy脚本运行testing。 这很有用,因为这些testing可以是有状态的,互相build立,并在适当的时候共享variables。 我们发现Restlet的API简单直观,而且可以很容易地编写快速的HTTP请求并testing响应,在Groovy中使用它更加容易。 (我希望不久能在我们的博客上分享这个技巧,包括testing跑步者脚本。)

Google Chrome扩展程序Postman可能会有所帮助。

我发现RequestBin对debuggingREST请求很有用。 发布到唯一的URL和请求数据更新/显示。 当其他工具不可用时,可以帮助捏合。

http://requestb.in/

如果您正在运行OS X Leopard,我发现了一个有用的工具:

HTTP客户端

这是一个非常简单的graphics用户界面程序,可以让你制作对资源的http请求并查看响应。

您可以使用小提琴的composer php来debugging宁静的服务 ..

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

cURL工作得很好。

我最终决定了POSTMAN

它支持所有我能想到的RESTfunction,而UI绝对是优秀的。 唯一的缺点是它需要Chrome。

RESTTest for Firefox(附加组件)。 提琴手为IE浏览器。

我正在使用肥皂用户界面来testing我的REST API。

它比其他工具更完整:

  • 良好的debugging请求和响应
  • 自动化testing
  • 所有基于GUI
  • 属性和属性转移到参数化您的testing
  • 条件testing
  • 性能testing

我没有为SmartBear工作。 在使用SOAP WebServices的时候,我已经是SoapUI的粉丝了。

我的SoapUI REST项目

除了使用Peter Hilton的一个工具之外,我不得不说,使用LWP或类似工具编写testing脚本可能是您唯一的select。 你可以通过打开套接字,发送一个原始的HTTP请求,并检查你得到的回报,绕过使用LWP。 但据我所知,这类域名缺乏testing工具 – 大多数是从网站开发者的angular度来看待这个问题空间,对于他们来说,浏览器就足够了一个testing平台。

我使用restcode,可从Google Code获得 。 这是一个简单的Java Swing应用程序,它支持所有的HTTP方法,并允许您完全控制HTTP标头,conneg等。

如果您希望免费提供多部分表单数据提交function的相同目的,请访问http://code.google.com/a/eclipselabs.org/p/restclient-tool/

Firefox的RESTClient插件发送不同的方法,参数, 头等请求

你们应该检查火狐的海报扩展,这是简单和有用的足够使用:)

我倾向于使用Jersey提供的RESTful资源编写unit testing,这个REST客户端附带了一个很好的REST客户端。 好的是,如果您使用JAX-RS实现RESTful资源,则Jersey客户端可以重用JAXB / XML / JSON / Atom等实体提供者 – 这样您就可以在服务器端重复使用相同的对象在客户端使用unit testing。

例如, 这里是 Apache Camel项目中的 一个unit testing用例 ,它从RESTful资源(使用JAXB对象端点)查找XML负载。 资源(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); 

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

是值得的一分钱…