我正在寻求在Rails应用程序中的某些资源上实现内容协商。我正在使用Mootools,并且可能能够将XMLHTTPRequest接受的内容类型调整为“application / json”。
有没有办法在我的控制器中获取这些信息并生成JSON响应而不是XHTML?
我试图避免做类似的事情:
http://site/resource/1?format=JSON
...因为它弄脏了我的网址,造成了一定程度的冗余并且不那么灵活。
谢谢!
答案 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 。