PHP 的项目的问题

2016-07-01 17:58:48 +08:00
 m939594960

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

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

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

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

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

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

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

错误信息不会太大,太大了就是设计有问题了,接口使用者看着这么巨大的错误列表会昏过去的
seki
2016-07-01 19:26:57 +08:00
一般都是一类错误会给一个统一的错误码,然后附带一个描述吧
cxbig
2016-07-01 19:28:37 +08:00
参考 HTTP Response Code
feiyuanqiu
2016-07-01 19:34:29 +08:00
另外,我们现在提供接口一般都是直接封装好一个接口 Client 的 composer package ,发布到公司的 repository 上面,要用我们接口的团队直接 require 这个包就行了,即插即用,也不需要他们自己再去弄接口调用、签名之类的麻烦事了,发布的接口全都在 Client 里面写成方法,接口返回全部封装成实体对象,用 IDE 开发起来也方便
HanSonJ
2016-07-01 20:41:22 +08:00
@m939594960 这个不科学,直接一个信息不完整的错误码,错误信息可以自己拼接上去
iyaozhen
2016-07-01 20:52:15 +08:00
@m939594960 科学啊,分详细点还是好的。前端也可以根据不同的错误码进行不同的动作,而且定位问题也比较方便。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/289653

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX