如何在RESTful Web服务中进行正确的错误处理?

时间:2014-05-12 11:26:30

标签: java web-services rest spring-mvc error-handling

我正在使用spring-mvc设计一个restful WS API。

如果在服务器执行代码时发生特定错误(让我们说:MyCustomException),我想返回error_codeerror_desc详细原因对于调用我的WS的客户端出错,那么以通用方式设计此API的最佳方法是什么?

P.S。:请注意,如果服务器没有遇到任何错误,那么这个相同的API应该将响应对象返回给客户端。

感谢。

1 个答案:

答案 0 :(得分:2)

对于错误处理,最好使用严格建立的标准。 JSON响应中的error_code和error_desc不是一个严格建立的标准,因此我强烈建议不要将错误信息放在JSON / XML有效负载中。不遵循标准会增加错误,误解的可能性,并且通常会使您的开发过程更长。

相反,我建议使用HTTP状态代码,如果您必须提供有关错误的更多详细信息,请在标头中执行此操作。

请在此处查看状态代码的说明/列表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

例如,如果您的服务器/服务遇到未知错误,只需输入500状态代码(代表内部服务器错误)。如果不允许用户/客户端使用该资源,请使用403 Forbidden。如果客户端发送格式错误的请求,请发回401。

Spring有一些非常好的工具可以让这个过程更容易。要处理ACROSS控制器的异常,请查看@ExceptionHandler和@ControllerAdvice。