2012-07-17 51 views
1

我正在使用巨人和葡萄。在我的歌利亚的服务器,它调用API葡萄像这样:有没有办法在葡萄上修改或发送自定义标题?

when '/posts' then FrameworksAPI::API.call(env) 

在我的葡萄API类,我的方法是如此简单:

get '/:id' do 
Post.find(params[:id]) 
end 

我想修改标题 - 特别'内容长度',但不确定如何。

另外我想问一个额外的问题。如何在方法GET返回想要修改结果的结果之前特别创建回调/过滤器。

回答

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提供的内容长度中间件。内容长度默认加载,但如果您设置自定义内容长度,则优先。在设置内容长度后,请谨慎地确定格式化等其他中间件不会更改主体。

6

葡萄现在有几个版本的header帮手。

header 'Content-Length`, 42.to_s 

对于您的修改体的第二个问题,尝试API级别使用after do ...

相关问题