Rails中的RESTful内容协商

时间:2009-07-04 16:23:43

标签: ruby-on-rails json rest mootools content-negotiation

我正在寻求在Rails应用程序中的某些资源上实现内容协商。我正在使用Mootools,并且可能能够将XMLHTTPRequest接受的内容类型调整为“application / json”。

有没有办法在我的控制器中获取这些信息并生成JSON响应而不是XHTML?

我试图避免做类似的事情:

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

...因为它弄脏了我的网址,造成了一定程度的冗余并且不那么灵活。

谢谢!

4 个答案:

答案 0 :(得分:9)

http://site/resource/1.json未正确使用内容协商。关键是URL应该保持不变,但是客户端要求基于它随请求发送的HTTP头的特定表示(JSON,PDF,HTML等)。

答案 1 :(得分:4)

您可以在控制器方法中使用respond_to节,如下所示:

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

Rails根据客户端提交的HTTP Accept标头的值确定响应格式。

答案 2 :(得分:1)

肯定http://site/resource/1.json应该有用吗?但是,您可能需要在Rails环境中进行设置,具体取决于您拥有的Rails版本的当前状态,我对此表示怀疑。

答案 3 :(得分:0)

经过大量研究,虽然rails拥有自动选择输出模板的所有功能,但仍需要为您希望支持的每个人调用 respond_to