How to receive a JSON object with Rack

后端 未结 3 695
臣服心动
臣服心动 2021-01-02 23:35

I have a very simple Ruby Rack server, like:

app = Proc.new do |env| 
  req = Rack::Request.new(env).params
  p req.inspect 
  [200, { \'Content-Type\' =>         


        
相关标签:
3条回答
  • 2021-01-03 00:00

    One more way to do that:

    # ...
    request  = Rack::Request.new env
    object   = JSON.parse request.body.gets
    # ...
    

    See the documentation: www.rubydoc.info/gems/rack/Rack/Lint/InputWrapper

    0 讨论(0)
  • 2021-01-03 00:05
    env['rack.input'].gets
    

    This worked for me. I found that using curl or wget to test POST requests against a Rack (v1.4.1) server required using this code as a fallback to get the request body. POST requests out in the wild (e.g. GitHub WebHooks) didn't have this same problem.

    0 讨论(0)
  • 2021-01-03 00:05

    It seems that I'm supposed to use something like:

    msg = JSON.parse env['rack.input'].read 
    

    Then just use params in the msg hash.

    At least it worked for me this way.

    0 讨论(0)
提交回复
热议问题