2012-07-17 50 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 ...

相關問題