作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经能够在 before
块中将所有内容类型设置为 JSON,但是是否有过滤器后的 sinatra 允许我对所有响应运行 to_json(而不是在下面的示例中编写 to_json
3 次) ?
require 'sinatra'
require 'json'
before do
content_type :json
end
get '/' do
{ song: "Hello" }.to_json
end
get '/go' do
{ song: "Go Yo Ho" }.to_json
end
get '/hi' do
{ song: "Wake me Up" }.to_json
end
最佳答案
您可以在 after
块中执行此操作:
before do
content_type :json
end
get '/' do
{ a: 1 }
end
after do
response.body = JSON.dump(response.body)
end
helper do
def j(data)
JSON.dump(data)
end
end
get '/' do
j({ a: 1 })
end
Sinatra::JSON
项目做同样的事情。此外,您可能想查看专为构建
Grape 或
Goliath 等 API 而设计的库。这两个库提供了一种简单的方法来连接解码器和编码器来处理这种类型的自动转换。
关于json - 您如何将所有 Sinatra 响应设置为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27644016/
我是一名优秀的程序员,十分优秀!