V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
amanohaneizz
V2EX  ›  问与答

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

  •  
  •   amanohaneizz · 72 天前 · 922 次点击
    这是一个创建于 72 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    看看 github 怎么做的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1069 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:01 · PVG 05:01 · LAX 14:01 · JFK 17:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.