Rails将所有的404和500错误返回为JSON
Rails将所有的404和500错误返回为JSON
我在rails中相当新,正在使用rails 4。
在我的应用程序中,我想以JSON格式返回所有的404和500错误,如下所示:
{
"status": 404,
"message": "未找到"
}
有没有简单的方法来做到这一点?因为我只找到了在rails 3.x中实现这个的解决方案。
谢谢。
我尝试使用这个解决方案Need to return JSON-formatted 404 error in Rails但是我得到了错误消息error during failsafe response: uninitialized constant ErrorsController
。
问题原因:Rails默认情况下,当出现404和500错误时,会返回HTML格式的错误页面。但有时我们希望以JSON格式返回错误信息,方便前端处理。
解决方法:可以通过以下两种方式实现全局返回JSON格式的404和500错误。
方法一:
在控制器中使用render :json => _object.to_json, :status => :unprocessable_entity
,将对象转换为JSON格式并返回。
方法二:
在ApplicationController中使用
rescue_from StandardError do |exception| # render what you want here end
,捕获所有的标准错误,并在其中编写返回JSON格式的逻辑。
以上两种方法可以在整个应用中实现全局返回JSON格式的错误信息。如果还需要处理路由错误,可以参考这个问题:stackoverflow.com/a/6773038/1571834。