我正在使用spring-mvc设计一个restful WS API。
如果在服务器执行代码时发生特定错误(让我们说:MyCustomException
),我想返回error_code
和error_desc
详细原因对于调用我的WS的客户端出错,那么以通用方式设计此API的最佳方法是什么?
P.S。:请注意,如果服务器没有遇到任何错误,那么这个相同的API应该将响应对象返回给客户端。
感谢。
答案 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。