m939594960
V2EX  ›  问与答

PHP 的项目的问题

  •  
  •   m939594960 · Jul 1, 2016 · 1750 views
    This topic created in 3642 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    12 replies    2016-07-01 20:52:15 +08:00
    HanSonJ
        1
    HanSonJ  
       Jul 1, 2016
    不同的错误就有可能有不同的应对机制,此时就需要通过错误码来识别,错误码这个个人感觉还是没有放数据库的必要,除非你业务变化大,需要随时改动、增加错误码,放数组的话负担也不会大,毕竟很少有超过 30 个错误码的吧
    qiayue
        2
    qiayue  
    PRO
       Jul 1, 2016 via Android
    放在配置文件里,常用的错误码不会太多
    lianyue
        3
    lianyue  
       Jul 1, 2016   ❤️ 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
       Jul 1, 2016
    @HanSonJ
    @qiayue
    现在的问题是每一个错误(用户名密码错误,参数错误,姓名 /账号 /状态不能为空)各种状态都要统一对应一个状态码。加起来可能会几百个。
    这样做是是科学(正确的么?) 如不过科学怎么样才是科学的?
    qiayue
        5
    qiayue  
    PRO
       Jul 1, 2016 via Android
    把错误分类,同一种处理逻辑的放一类。
    举例有些错误只需要告诉用户一声,不需要做其他操作,有些错误需要用户互动
    qiayue
        6
    qiayue  
    PRO
       Jul 1, 2016 via Android
    建议你找几个大站的 API 文档看看他们的错误码都有哪些
    如微博 API ,微信 API
    feiyuanqiu
        7
    feiyuanqiu  
       Jul 1, 2016
    要提供错误码是因为使用这些 api 的也是程序,错误码提示的是一类错误,方便接口使用程序处理错误;错误信息告知具体的错误原因,方便接口使用者 debug
    你把它当成异常就很好理解,同一类的异常情况抛出相同的异常类,但是异常信息会因具体的情况而不同

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