【问题标题】:How to debug RESTful services? [closed]如何调试 RESTful 服务? [关闭]
【发布时间】:2010-09-15 00:13:00
【问题描述】:

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

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

【问题讨论】:

    标签: debugging http rest


    【解决方案1】:

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

    【讨论】:

    • 这两个看起来都是非常有趣的工具,谢谢指点!
    • 我正在使用第一个,对我来说很好用。
    • 我写了一个名为 Requester for Sublime Text 的 REST 客户端插件,github.com/kylebebak/Requester。它的灵感来自 HTTPie 和 Postman。它非常强大且易于使用,而且它是跨平台的。如果您不喜欢您的 HTTP 客户端,那么绝对值得一试。
    【解决方案2】:

    在我的公司,我们使用各种不同的工具和方法来测试 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 上分享这项技术,包括测试运行脚本。)

    【讨论】:

      【解决方案3】:

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

      多年后编辑:还有网址的网站,以防 Chrome 扩展链接被更改:www.postman.com

      【讨论】:

      • 这是一个相对较新的扩展,但只是为了能够保存请求集并管理/共享它们+一个漂亮的界面,我强烈推荐它。
      • 邮递员我们也可以将文件请求上传为多部分数据
      • 死链接。我猜this app 是吗?我不确定。
      • @Guildenstern 是的,就是这样。我相信它不再是“只是一个 chrome 扩展”,现在也是一个独立的应用程序。您也可以使用 Firecamp、Postwoman、Insomnia 等。
      【解决方案4】:

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

      https://requestbin.com/

      【讨论】:

        【解决方案5】:

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

        HTTP Client

        这是一个非常简单的 GUI 程序,可让您制作对资源的 http 请求并查看响应。

        【讨论】:

          【解决方案6】:

          cURL 工作正常。

          【讨论】:

            【解决方案7】:

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

            2013 年 9 月 12 日更新 JD:Rest Builder 现在称为 Composer

            【讨论】:

            • 上述请求生成器的链接已损坏。
            【解决方案8】:

            我最终选择了POSTMAN

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

            【讨论】:

            • 现在独立于chrome了,U可以不用chrome,直接安装,
            【解决方案9】:

            RESTTest 用于 Firefox(附加组件)。 Fiddler 用于 IE。

            【讨论】:

            • RestTest 已被禁用(2013 年 9 月 12 日)
            【解决方案10】:

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

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

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

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

            【讨论】:

              【解决方案11】:

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

              【讨论】:

                【解决方案12】:

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

                【讨论】:

                  【解决方案13】:

                  如果您想要具有相同目的的免费工具并具有多部分表单数据提交的附加功能,请点击此处http://code.google.com/a/eclipselabs.org/p/restclient-tool/

                  【讨论】:

                    【解决方案14】:

                    Firefox 的 RESTClient 插件可以发送带有方法、参数、标头等的不同请求。

                    【讨论】:

                      【解决方案15】:

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

                      【讨论】:

                        【解决方案16】:

                        我倾向于使用 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);
                        

                        【讨论】:

                          【解决方案17】:

                          因为这里完全没有: https://luckymarmot.com/paw

                          一分钱一分货……

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 2013-09-18
                            • 2014-10-20
                            • 2012-02-11
                            • 2013-08-25
                            • 2013-12-20
                            • 2014-02-07
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多