2009-07-04 31 views
5

我正在尋求在Rails應用程序中的一些資源上實現內容協商。我正在使用Mootools,並可能能夠將XMLHTTPRequest接受的內容類型調整爲「application/json」。Rails中的RESTful內容協商

有沒有辦法在我的控制器中獲取這些信息,並生成JSON響應而不是XHTML?

我試圖避免做這樣的事情:

http://site/resource/1?format=JSON 

...因爲它弄髒了我的網址,規定了一定程度的冗餘,不靈活。

謝謝!

回答

4

你可以在你的控制器方法使用respond_to節,就像這樣:

respond_to do |format| 
    format.html { # Generate an HTML response... } 
    format.json { # Generate a JSON response... } 
end 

Rails的決定基於HTTP接受客戶端提交頭的值的響應格式。

1

當然http://site/resource/1.json應該工作?不過,您可能需要在Rails環境中進行設置,具體取決於您擁有的Rails版本的當前狀態,我對此表示懷疑。

0

經過大量研究,儘管rails有一切可以自動選擇輸出模板,但仍需要致電respond_to(對於您希望支持的每個模板)。

8

http://site/resource/1.json是不正確的使用內容協商。重點在於URL應該保持不變,但客戶端會根據與請求一起發送的HTTP頭來請求特定的表示形式(JSON,PDF,HTML等)。