在本地计算机上接收REST响应

时间:2009-11-14 21:50:11

标签: ruby-on-rails http rest

我使用网络服务转换文件。该服务将转换后的文件作为HTTP POST以及标识符数据返回。我的应用程序收到响应,更新其数据库并将文件保存到适当的位置。

至少这是个主意,但我如何在本地机器上开发和测试呢?由于它不是公开的,我不能提供指令URL。处理这个问题的最佳方法是什么?我希望尽可能保持这个过程的清洁,而我能提出的唯一想法似乎过于苛刻。

鉴于REST API开发的常见程度,我认为有完善的最佳实践。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:0)

根据您使用的服务器,解决方案会发生一些变化。

但普遍接受的方法是使用环回地址:127.0.0.1代替完全限定的域名。您的服务器可能需要重新配置才能侦听此IP地址,但这通常是一个简单的修复。

示例:http://127.0.0.1/path/to/resource.html

如果您的应用程序有正确的前端,您可以使用curl甚至浏览器。还有许多其他类似的工具可以从命令行对其进行测试,每种语言都有一组库,用于建立http连接并沿着它们传输数据。

答案 1 :(得分:0)

如果您正在使用的服务无法访问您的计算机,那么您唯一的选择就是构建一个本地实现的服务来运行您的API。使用文件和信息发送POST的rake任务将是一件好事,因此您可以在本地启动rails应用程序,然后使用一些参数启动任务以运行您的应用程序。

只要您尝试开发在开发期间无法连接到所需资源的系统,就会出现这种情况。您需要构建各种开发工具,以便您可以执行外部服务将在您的应用程序上调用的所有不同类型的操作。

这肯定不会轻松或直接,特别是如果您对此外部服务的接口很复杂。请务必让您的测试用例向您的应用程序发送错误的POST,以确保您能够处理您期望的内容以及不需要的内容。

在使用应用程序“上线”之前,还要确保对实际服务进行了一些集成测试。希望您可以部署到Web服务可以访问的外部服务器以进行测试。亚马逊的EC2托管环境可让您快速设置服务器,运行测试,然后关闭而不需要太多费用。

答案 2 :(得分:0)

您有两个选择:

  1. 设置动态DNS并将您的应用展示给外界。这仅在您完全控制您的网络时才有效。

  2. 使用类似webrat的内容来伪造您应用的帖子。由于这只是一个请求,这似乎很简单。

  3. 考虑到你应该为此编写自动化测试,我会选择#2。在开发Facebook应用程序时我常常做#1,因为有很多要求用webrat模拟它们。

答案 3 :(得分:0)

如果您的问题是关于测试,为什么不使用模拟来伪造服务器?它比使用Webrat更优雅,更易于部署(您只有一个应用程序而不是应用程序和测试环境)。

有关mocks http://blog.floehopper.org/presentations/lrug-mock-objects-2007-07-09/

的更多信息

您在这里获得了一些关于Rspec模拟的信息http://rspec.info/documentation/mocks/