1

要在 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
4

1 回答 1

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
于 2013-03-17T03:56:03.550 回答