2009-07-04 55 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等)。