现在 web 开发比较流行的错误码处理方式是什么?

2022-05-30 18:14:22 +08:00
 amanohaneizz

最近业务要接触这方面了,对于错误处理的返回很纠结。
自己实现一套错误码觉得累赘,只用 http 的状态码又无法把具体错误信息暴露出来。

例如用户登录时要提示无效的用户名密码,这个信息怎么优雅的返回?

下面这个梗图我笑了几个礼拜,现在看见还想笑

1484 次点击
所在节点    问与答
5 条回复
israinbow
2022-05-30 18:30:47 +08:00
直接就返回 http 状态码, 需要处理的都在前端处理, 比如不合法字符的就直接前端提示, 发送请求参数不合法服务端就返回 405, 不管他什么不合法的都是 429 404 405, 能绕过前端程序发送请求的不需要知道到底是什么状态. 开发调试? 看文档去.
lovedebug
2022-05-30 18:37:42 +08:00
我的实践经验是产品需要明确一套自己的子 error code ,然后文档化, 后端通常需要处理 400 ,429 ,404 ,403 ,500 错误,并且其中大部分都可以由框架自动处理,代码中一般只需要处理 404 以及调用第三方的错误
比如登录失败 403 一般写成
HTTP Code 403
Response:
{
code: -403001,
message: Invalid UserName or Password.
}
7gugu
2022-05-30 19:17:08 +08:00
就用梗图的办法🤷‍♂️
wunonglin
2022-05-30 21:06:29 +08:00
正常: httpStatusCode -> 200 body:{code: 0, token: "dasdasdadasd"}
账号密码错误: httpStatusCode -> 200 body:{code: 400001}
服务器出错: httpStatusCode -> 5xx body:{code: 400002}
token 过期: httpStatusCode -> 401 body:{code: 400003}
无权限: httpStatusCode -> 403 body:{code: 400004}

这里的 code 是业务状态码,与 httpstatuscode 无关。页面根据 code 去显示对应的语言提示即可。这样也很方便解决多语言的问题。至于需不需要 message 我觉得无所谓,message 更适合开发快速定位问题,而不是用来显示
jolanyu
2022-05-31 01:07:02 +08:00
https://docs.github.com/cn/rest

看看 github 怎么做的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/856274

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX