我正在使用歌利亚和葡萄。在我的巨人服务器上,它会像葡萄api一样调用葡萄api:
when '/posts' then FrameworksAPI::API.call(env)
在我的葡萄api课上,我的方法就像这样简单:
get '/:id' do
Post.find(params[:id])
end
我想修改标题 - 特别是'Content-Length'但不确定如何。
我还想问一个额外的问题。如何在方法GET返回结果之前创建回调/过滤器我想修改结果。
答案 0 :(得分:6)
Grape现在有几个版本的header
助手。
header 'Content-Length`, 42.to_s
关于修改正文的第二个问题,请尝试在API级别使用after do ...
。
答案 1 :(得分:0)
从FrameworksAPI :: API.call(env)方法返回的是一个三元组[status_code,headers,body]。所以,不要只是从你的案例中返回,你会做类似的事情:
when '/posts' then
status, headers, body = FrameworksAPI::API.call(env)
headers['whatever'] = blah
[status, headers, body]
你也可以改变身体,因为身体可能是阵列,所以要小心。
还有一个由Goliath提供的Content-Length中间件。默认情况下会加载Content-Length,但如果设置自定义Content-Length,它将优先。在设置内容长度后,请注意其他中间件(如格式设置)不会更改正文。