如何使用Ruby Rack中间件以JSON格式响应

问题描述 投票:0回答:2

如何使用 JSON 对象回复简单的 ruby 机架服务器,让我们假设 mt 服务器类似于:

app = Proc.new do |env| 
  [200, { 'Content-Type' => 'text/plain' }, ['Some body']]
end 

Rack::Handler::Thin.run(app, :Port => 4001, :threaded => true)

让我们假设我想要一个 JSON 对象,而不是一些正文:

{
"root": [
    {
        "function": null
    }
] 

}

谢谢

ruby-on-rails ruby json rack middleware
2个回答
25
投票

在您的项目中包含“json”gem,然后在哈希上调用

#to_json

app = Proc.new do |env| 
  [200, { 'Content-Type' => 'application/json' }, [ { :x => 42 }.to_json ]]
end

请注意,如果您需要

nil
null
会在 JSON 中翻译为
null


0
投票

对于 Rack-Attack v6 (2024):

  Rack::Attack.blocklisted_responder = lambda do |request|
    [
      429,
      { 'Content-Type' => 'application/json' },
      [ { error: "TOO_MANY_FAILED_ATTEMPTS", message: "Wait 1 minute" }.to_json ]
    ]
  end
© www.soinside.com 2019 - 2024. All rights reserved.