Sinatra中间件根据CONTENT_TYPE标头转换params变量

时间:2013-11-25 18:03:48

标签: ruby sinatra rack rack-middleware

我有一个API端点,它应该接收JSON或表单urlencoded数据。我可以通过接受标头检测到这一点,但我只是想知道是否有一个机架中间件已经为我做了这个。基本上,它会根据accept标头转换参数。

1 个答案:

答案 0 :(得分:2)

你想要https://github.com/achiu/rack-parser,你可以声明解析策略:

use Rack::Parser, :parsers => {
  'application/json' => proc { |body| MyCustomJsonEngine.do_it body },
  'application/xml'  => proc { |body| MyCustomXmlEngine.decode body },
  'application/roll' => proc { |body| 'never gonna give you up'     }
}

但是,它使用content_type标头。因为这是放置传入的mime类型信息的正确标头。 Accepts标头是用户将接受的响应。