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

PHP 的项目的问题

  •  
  •   m939594960 · 2016-07-01 17:58:48 +08:00 · 1416 次点击
    这是一个创建于 3058 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司的某个项目 要提供对内 /对外的 API 接口

    现在有个问题,要有一套错误代码 对应相应的错误,

    问下这种错误代码存在的意义是什么?直接提示错误不好么?

    如果必须要用错误代码的形式, PHP 要怎么做处理?

    是把错误代码和对应信息存到数据库还是存放到数组中? 太大了放到数组中 加载会不会有负担?

    还是提示的时候单独定义代码和错误信息

    12 条回复    2016-07-01 20:52:15 +08:00
    HanSonJ
        1
    HanSonJ  
       2016-07-01 19:01:33 +08:00
    不同的错误就有可能有不同的应对机制,此时就需要通过错误码来识别,错误码这个个人感觉还是没有放数据库的必要,除非你业务变化大,需要随时改动、增加错误码,放数组的话负担也不会大,毕竟很少有超过 30 个错误码的吧
    qiayue
        2
    qiayue  
       2016-07-01 19:04:04 +08:00 via Android
    放在配置文件里,常用的错误码不会太多
    lianyue
        3
    lianyue  
       2016-07-01 19:12:40 +08:00   ❤️ 1
    错误代码方便机器判断
    switch (xxx) {
    case 4:

    break;
    case 3:

    break;
    case 2:

    break;
    case 1:

    break;
    default:

    }



    switch (xxx) {
    case 'aaa 错误了':

    break;
    case ‘ bbbb 错误了:

    break;
    case ’ ccc 错误了‘:

    break;
    case ’ ddd 错误了‘:

    break;
    default:

    }


    一般我都是 {code:4,message:'xxxx 错误'}
    m939594960
        4
    m939594960  
    OP
       2016-07-01 19:14:15 +08:00
    @HanSonJ
    @qiayue
    现在的问题是每一个错误(用户名密码错误,参数错误,姓名 /账号 /状态不能为空)各种状态都要统一对应一个状态码。加起来可能会几百个。
    这样做是是科学(正确的么?) 如不过科学怎么样才是科学的?
    qiayue
        5
    qiayue  
       2016-07-01 19:18:50 +08:00 via Android
    把错误分类,同一种处理逻辑的放一类。
    举例有些错误只需要告诉用户一声,不需要做其他操作,有些错误需要用户互动
    qiayue
        6
    qiayue  
       2016-07-01 19:21:24 +08:00 via Android
    建议你找几个大站的 API 文档看看他们的错误码都有哪些
    如微博 API ,微信 API
    feiyuanqiu
        7
    feiyuanqiu  
       2016-07-01 19:25:15 +08:00
    要提供错误码是因为使用这些 api 的也是程序,错误码提示的是一类错误,方便接口使用程序处理错误;错误信息告知具体的错误原因,方便接口使用者 debug
    你把它当成异常就很好理解,同一类的异常情况抛出相同的异常类,但是异常信息会因具体的情况而不同

    错误信息不会太大,太大了就是设计有问题了,接口使用者看着这么巨大的错误列表会昏过去的
    seki
        8
    seki  
       2016-07-01 19:26:57 +08:00
    一般都是一类错误会给一个统一的错误码,然后附带一个描述吧
    cxbig
        9
    cxbig  
       2016-07-01 19:28:37 +08:00
    参考 HTTP Response Code
    feiyuanqiu
        10
    feiyuanqiu  
       2016-07-01 19:34:29 +08:00
    另外,我们现在提供接口一般都是直接封装好一个接口 Client 的 composer package ,发布到公司的 repository 上面,要用我们接口的团队直接 require 这个包就行了,即插即用,也不需要他们自己再去弄接口调用、签名之类的麻烦事了,发布的接口全都在 Client 里面写成方法,接口返回全部封装成实体对象,用 IDE 开发起来也方便
    HanSonJ
        11
    HanSonJ  
       2016-07-01 20:41:22 +08:00
    @m939594960 这个不科学,直接一个信息不完整的错误码,错误信息可以自己拼接上去
    iyaozhen
        12
    iyaozhen  
       2016-07-01 20:52:15 +08:00 via Android
    @m939594960 科学啊,分详细点还是好的。前端也可以根据不同的错误码进行不同的动作,而且定位问题也比较方便。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1928 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:27 · PVG 00:27 · LAX 08:27 · JFK 11:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.