REST API的错误处理

2017 Feb 26

文章推荐了一种REST API发生错误时HTTP body的格式。

{
    "status": 404,
    "code": 40483,
    "message": "Oops! It looks like that file does not exist.",
    "developerMessage": "File resource for path /uploads/foobar.txt does not exist.  Please wait 10 minutes until the upload batch completes before checking again.",
    "moreInfo": "http://www.mycompany.com/errors/40483"
}

status的值就是HTTP status code。

code是应用程序内部的错误代码。 表示错误的HTTP status code最多只有几十种,不能再细分到底是哪段业务逻辑发生了错误;而code的值空间是无限的。 同时code也方便后续在代码中定位错误。

messagecode的具体描述信息。它(可以)和code一一对应。 同一code的message在不同的locale下可以是不同的值。翻译的信息可以放在json或者XML文件里。

developerMessagemoreInfo相比之下没有那么重要。

实现时,可以设计一个异常类,BusinessException(HttpStatus status, String code); 然后实现一个HandlerExceptionResolver