amanohaneizz
V2EX  ›  问与答

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

  •  
  •   amanohaneizz · May 30, 2022 · 2423 views
    This topic created in 1458 days ago, the information mentioned may be changed or developed.

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

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

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

    5 replies    2022-05-31 01:07:02 +08:00
    israinbow
        1
    israinbow  
       May 30, 2022
    直接就返回 http 状态码, 需要处理的都在前端处理, 比如不合法字符的就直接前端提示, 发送请求参数不合法服务端就返回 405, 不管他什么不合法的都是 429 404 405, 能绕过前端程序发送请求的不需要知道到底是什么状态. 开发调试? 看文档去.
    lovedebug
        2
    lovedebug  
       May 30, 2022
    我的实践经验是产品需要明确一套自己的子 error code ,然后文档化, 后端通常需要处理 400 ,429 ,404 ,403 ,500 错误,并且其中大部分都可以由框架自动处理,代码中一般只需要处理 404 以及调用第三方的错误
    比如登录失败 403 一般写成
    HTTP Code 403
    Response:
    {
    code: -403001,
    message: Invalid UserName or Password.
    }
    7gugu
        3
    7gugu  
       May 30, 2022
    就用梗图的办法🤷‍♂️
    shakaraka
        4
    shakaraka  
    PRO
       May 30, 2022
    正常: 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
        5
    jolanyu  
       May 31, 2022
    https://docs.github.com/cn/rest

    看看 github 怎么做的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3654 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 04:41 · PVG 12:41 · LAX 21:41 · JFK 00:41
    ♥ Do have faith in what you're doing.