在http应用中,http server不可避免发生各种各样的错误,如数据库服务死掉、硬盘资源不够导致文件写错误。当发生错误时,应该返回怎样的信息呢?
在最近的一个项目中,对于错误信息,使用的结构是:原生的http code + 自定义code + err msg
- 关于http code
对于一个成功的请求,http code: 200 + obj
对于一个失败的请求,可能会有不同的http code:
如果因为服务器错误导致失败,http code: 500
如果权限不够,访问了不应访问的api, http code: 403
如果传递的参数格式不对或与要求不符,http code: 400 - 对于自定义code的作用,我的理解如下:
当用户遇到错误时, 页面上的错误码提供给开发者,开发者可以因之得到更多的信息。
后端需要根据不同的error或异常返回不同的错误码 - err msg
在debug/development模式下,错误详细信息会写到err msg中,发送到前端。但是在生产环境下,err msg不会发送给前端。
参考:
https://apigee.com/about/blog/technology/restful-api-design-what-about-errors