在Grape API中检查请求正文

时间:2014-07-04 03:48:05

标签: grape-api

我的Grape端点中有一行这样的行来检查POST主体的内容,以提供测试端点:

return 'OK' if request.body.string == 'TEST'

在笔记本电脑上的开发环境中,这很好用。但是,在我们的暂存和生产环境中,它会引发异常:

NoMethodError: undefined method `string' for #<Unicorn::TeeInput:0x0000000b0d0290>

我可以发现这与Rack有关,但我很惊讶地发现两个环境之间的中间件有不同的行为。我想知道是否有人遇到过这个并且可能有一个建议,因为我看到Unicorn :: TeeInput似乎并没有简单的方法来检查内容。我希望也许有一个&#34;官员&#34;在Grape中直接访问请求主体的方法,但我还没找到。

感谢任何想法。

1 个答案:

答案 0 :(得分:1)

尝试使用env['rack.input'],它应该返回一个输入流(实际上是Rack::Lint::InputWrapper或workalike),您可以从中读取请求正文:

return 'OK' if env['rack.input'].gets.eql? 'TEST'

我已经测试了这个,它使用WEBrick和Unicorn在本地工作。