我正在使用歌利亚和葡萄。在我的 goliath 服务器上,它像这样调用葡萄 api:
when '/posts' then FrameworksAPI::API.call(env)
在我的葡萄 api 类上,我的方法很简单:
get '/:id' do
Post.find(params[:id])
end
我想修改标题 - 特别是“内容长度”,但不确定如何修改。
另外我想问一个额外的问题。如何在方法 GET 返回我想修改结果的结果之前专门创建回调/过滤器。
Grape 现在header
有几个版本的助手。
header 'Content-Length`, 42.to_s
关于修改正文的第二个问题,请尝试after do ...
在 API 级别使用。
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 它将优先。请注意,在您设置内容长度后,其他中间件(如格式)不会更改正文。