我正在尋求在Rails應用程序中的一些資源上實現內容協商。我正在使用Mootools,並可能能夠將XMLHTTPRequest接受的內容類型調整爲「application/json」。Rails中的RESTful內容協商
有沒有辦法在我的控制器中獲取這些信息,並生成JSON響應而不是XHTML?
我試圖避免做這樣的事情:
http://site/resource/1?format=JSON
...因爲它弄髒了我的網址,規定了一定程度的冗餘,不靈活。
謝謝!
我正在尋求在Rails應用程序中的一些資源上實現內容協商。我正在使用Mootools,並可能能夠將XMLHTTPRequest接受的內容類型調整爲「application/json」。Rails中的RESTful內容協商
有沒有辦法在我的控制器中獲取這些信息,並生成JSON響應而不是XHTML?
我試圖避免做這樣的事情:
http://site/resource/1?format=JSON
...因爲它弄髒了我的網址,規定了一定程度的冗餘,不靈活。
謝謝!
你可以在你的控制器方法使用respond_to
節,就像這樣:
respond_to do |format|
format.html { # Generate an HTML response... }
format.json { # Generate a JSON response... }
end
Rails的決定基於HTTP接受客戶端提交頭的值的響應格式。
當然http://site/resource/1.json應該工作?不過,您可能需要在Rails環境中進行設置,具體取決於您擁有的Rails版本的當前狀態,我對此表示懷疑。
經過大量研究,儘管rails有一切可以自動選擇輸出模板,但仍需要致電respond_to(對於您希望支持的每個模板)。
http://site/resource/1.json是不正確的使用內容協商。重點在於URL應該保持不變,但客戶端會根據與請求一起發送的HTTP頭來請求特定的表示形式(JSON,PDF,HTML等)。