Ruby 有没有办法在grape上修改或发送自定义标题?
我用的是歌利亚和葡萄。在我的goliath服务器上,它调用grape api,如下所示:Ruby 有没有办法在grape上修改或发送自定义标题?,ruby,goliath,grape-api,Ruby,Goliath,Grape Api,我用的是歌利亚和葡萄。在我的goliath服务器上,它调用grape api,如下所示: when '/posts' then FrameworksAPI::API.call(env) 在我的grape api类中,我的方法非常简单: get '/:id' do Post.find(params[:id]) end 我想修改标题-特别是“内容长度”,但不确定如何修改 我还想问另外一个问题。如何在GET方法返回我要修改的结果之前创建回调/过滤器。从FrameworkAPI::API.call
when '/posts' then FrameworksAPI::API.call(env)
在我的grape api类中,我的方法非常简单:
get '/:id' do
Post.find(params[:id])
end
我想修改标题-特别是“内容长度”,但不确定如何修改
我还想问另外一个问题。如何在GET方法返回我要修改的结果之前创建回调/过滤器。从FrameworkAPI::API.call(env)方法返回的结果将是一个三元组[status_code,Header,body]。因此,与其只是从您的案例中返回,不如做如下操作:
when '/posts' then
status, headers, body = FrameworksAPI::API.call(env)
headers['whatever'] = blah
[status, headers, body]
您也可以更改实体,只是要小心,因为实体可能是一个数组
Goliath还提供了一个内容长度中间件。默认情况下加载内容长度,但如果设置自定义内容长度,则以该长度为准。请注意,在设置内容长度后,其他中间件(如formattings)不会更改正文。Grape现在有一个
标题
帮助程序,用于一些版本
header 'Content-Length`, 42.to_s
关于修改主体的第二个问题,请尝试在API级别使用after do…