如何将所有Sinatra响应设置为JSON?
我已经能够在如何将所有Sinatra响应设置为JSON?,json,sinatra,Json,Sinatra,我已经能够在before块中将我的所有内容类型设置为JSON,但是是否有一个sinatra after过滤器允许我在所有响应上运行到\u JSON(而不是在下面的示例中将写入\u JSON3次) 谢谢 您可以在之后的块中执行此操作: before do content_type :json end get '/' do { a: 1 } end after do response.body = JSON.dump(response.body) end Sinatra将为更新的正
before
块中将我的所有内容类型设置为JSON,但是是否有一个sinatra after过滤器允许我在所有响应上运行到\u JSON(而不是在下面的示例中将写入\u JSON
3次)
谢谢 您可以在
之后的块中执行此操作:
before do
content_type :json
end
get '/' do
{ a: 1 }
end
after do
response.body = JSON.dump(response.body)
end
Sinatra将为更新的正文值重新计算正确的内容长度
另一种方法是使用助手:
helper do
def j(data)
JSON.dump(data)
end
end
get '/' do
j({ a: 1 })
end
这个项目也做同样的事情。此外,您可能希望了解为构建API(如或)而设计的库。这两个库提供了一种连接解码器和编码器以处理此类自动转换的简单方法 Putset:default\u content\u type'application/json'
并且您的所有响应都将包含content type:application/json
标题
helper do
def j(data)
JSON.dump(data)
end
end
get '/' do
j({ a: 1 })
end