到目前为止,我的团队已经使用HTTP请求在我们的项目中创建和修改特定的ActiveRecord对象。相关的控制器方法只呈现为json:
render json: { json: 'goes here' }
我正在创建一个基本的CRUD接口来执行此操作,它应该呈现HTML页面(render :html
)但是,我们还有一个辅助API,它依赖于能够通过HTTP调用这些控制器操作请求并获得json回复。
我尝试使用respond_to
块进行如下操作:
respond_to do | format |
format.json { render json: { json: 'goes here' } }
format.html # Appropriate view
end
但是,即使使用直接HTTP请求(在终端中使用cURL进行测试),我总会得到一个HTML响应。我已尝试在路由文件中使用constraint
,但即使这样也无法获得JSON响应。
为了从HTTP请求获取JSON响应,还是在服务器端或客户端上还需要做些什么,同时在请求来自表单时仍然呈现适当的视图?谢谢!
答案 0 :(得分:2)
如果您查看rake routes
的输出,那么您会看到所有URI都有这个(.format)
后缀。 parens意味着它是可选的。如果没有提供(如果Accept
标题没有消除请求的歧义),则Rails默认使用HTML进行响应。
所以在你的cURL命令中只提供.json
格式,Rails会回答正确的事情:
curl localhost:3000/foos.json
答案 1 :(得分:1)
如果你想执行特定的格式,例如json,那么你需要在请求来源的参数中传递它,并使用键值:format
whatever_path(format: :json)