如何在Rack中处理发布请求

时间:2013-03-16 04:25:51

标签: ruby rack

要在Rack中响应json响应,我可以执行以下操作。如何根据请求是GET请求还是PUT请求以及PUT请求附带的数据返回不同的响应?也就是说,从env变量检查请求并处理各种情况的惯用方法是什么?

require 'json'

class Greeter
  def call(env)
    [200, {"Content-Type" => "application/json"}, [{x:"Hello World!"}.to_json]]
  end
end

run Greeter.new

1 个答案:

答案 0 :(得分:1)

据我所知,在Rack中执行此操作的惯用方法是将env包裹在Rack::Request对象中并致电get?post?,等

这是一个简单的例子:

# config.ru
run(Proc.new do
  req = Rack::Request.new(env)
  response = <<-RESP
  get? #{req.get?}
  post? #{req.post?}
RESP
  [200, {"Content-Type" => "text/plain"}, [response]]
end)

以下是如何检查它的实际效果:

$ curl http://localhost:9292
    get? true
    post? false

$ curl --data "" http://localhost:9292
    get? false
    post? true