V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
luxiaokuo
V2EX  ›  程序员

API 全局错误代码定义 ?

  •  
  •   luxiaokuo · 2019-03-27 15:55:15 +08:00 · 3248 次点击
    这是一个创建于 2076 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有统一的标准或者是规范呢 ?

    钉钉服务端 API 全局错误码:

    https://open-doc.dingtalk.com/microapp/faquestions/rftpfg

    12 条回复    2020-10-28 15:26:38 +08:00
    reus
        1
    reus  
       2019-03-27 16:09:17 +08:00
    用数字的原因是,某一位或者几位可以表达多种选项,就好像某些产品的序列号的某几位代表生产厂、批号、日期等等

    HTTP 的状态码也是这样,前面一个数字是有个大致的意义的

    没有这种设计,又非要用数字状态码,还位数不一致,只能叫画虎不成反类犬

    既有 404,又有 4200010,这种就是垃圾接口
    chendy
        2
    chendy  
       2019-03-27 16:14:34 +08:00
    貌似没有啥标准,一下是个人观点:
    1,其实很多错误码并没有什么用,因为客户端一般也没有能力处理所有的异常情况…
    2,字符串常量做错误码可能更好…就不用查表了
    chinvo
        3
    chinvo  
       2019-03-27 16:19:03 +08:00 via iPhone
    可以考虑拿 http 错误码扩展,然后返回错误码的时候同时返回 human-friendly 的错误消息
    yc8332
        4
    yc8332  
       2019-03-27 16:19:41 +08:00
    自己定义,主要是开发人员的沟通,和前端或者 app
    1. 位数一致,一般某一位是区分模块的
    2. 多语言需求
    3. 特殊错误码,客户端需要处理(比如登录过期)
    reus
        5
    reus  
       2019-03-27 16:21:49 +08:00
    字符串是最直观的,出错时不用查表,要用时不用查表。如果要表示多种状况,用多个字段都比纯数字好
    TomVista
        6
    TomVista  
       2019-03-27 16:32:53 +08:00
    支持字符串,比较直观.
    avenger
        7
    avenger  
       2019-03-27 16:45:43 +08:00 via iPhone
    Varobjs
        8
    Varobjs  
       2019-03-27 17:34:25 +08:00 via Android
    这种位数不统一的好傻,总觉得全局错误码给内部开发用的,比如统一 6 位表示错误码,10 ****表示用户模块,20 ****表示订单模块。
    annielong
        9
    annielong  
       2019-03-27 18:12:16 +08:00
    错误代码可定是后台人员用啊,要不然还返回什么错误代码,直接返回错误信息的了
    hantsy
        10
    hantsy  
       2019-03-27 20:12:01 +08:00
    个人只用 Http Status Code,其它具体的信息在返回信息中提示,可以参考 Github API 设计。
    specita
        11
    specita  
       2019-03-28 10:24:44 +08:00
    错误码感觉大多数时候没啥用啊,除非调用方根据码来做不同的处理,一般看个 msg 就行了,一般就定义几个常用的错误码,不怎么去细分
    ZeawinL
        12
    ZeawinL  
       2020-10-28 15:26:38 +08:00
    有时候 Http 状态码是不够用的, 或者说无法表达更多的意思.
    举个例子: 假如用户没有登录然后去访问一些需要登陆才能获取的资源, 后端返回非 200http 状态码并提示 msg 内容为'未登录', 此时前端无法做更多操作, 他只能弹出 msg 使得用户自己去点击跳转登录页面. 如果加上自定义的'未登录'错误码, 前端查询错误码知道这个用户当前需要登录, 于是便自动跳转到相应的登陆页面. (一方面也和后端解耦, 因为后端不清楚登录页面的具体地址所以后端不应该写重定向. ), 用户状态为'未授权', '未验证' 的自定义错误码同理.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2583 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:42 · PVG 18:42 · LAX 02:42 · JFK 05:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.