一般地捕获500内部服务器错误并返回json

时间:2012-05-01 22:46:06

标签: json spring rest jackson

我使用Spring MVC编写一些Spring REST服务。我要求将任何500(内部服务器错误)作为带有Http Status = 500的json和带有json字符串的Http Body [“内部服务器错误”]发送回打包。 为此,我正在扩展OncePerRequestFilter并检查Http Response的状态。然后我用所需的json响应构造主体。 虽然这是有用的,但它很混乱。是否有更好的设计原则或spring / json类,我可以用Spring配置它实现相同的目的?

-Gotz

1 个答案:

答案 0 :(得分:1)

我相信你可以使用以下结构:

1)将HTTP 500错误映射到某个视图:

 <error-page>
        <error-code>500</error-code>
        <location>/errorView.htm</location>
    </error-page>

2)在你的Controller创建View中,它将返回你需要的任何Json信息。

@RequestMapping(value="/errorView.htm",method = RequestMethod.GET)
public String handleGet(HttpServletRequest req) {
     res.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
     res.setContentType("application/json");
     res.getWriter().print("{\Error"\:\"Internal Server Error\"}");
}

希望它有所帮助。