错误码应该是几位数?数字是多少?
看了看新浪、百度之类的api错误码,似乎没什么共同点啊
这方面有没有什么规范啊,全靠拍脑子想吗?望解惑啊!
可以用状态码(http code) + 错误码(error code)来进行控制
1)状态码用来表示此次请求的结果是成功还是失败
200 - OK
400 - BadRequest
500 - Server Error
...
2) 错误码用来表示失败的具体的原因是什么,也可以理解为返回的验证信息
0 - 没有错误
1 - 用户名称不能为空
2 - 不合法的媒体文件类型
...
单一用哪一个来控制都是不完整的
其实我觉得错误码也并不是一个很好的机制,一般客户端拿到服务器返回错误码也要根据错误码提示对应的消息,既然服务器能预先定义错误码,不如发生对应的错误直接提示友好的错误消息,客户端那还能省点事。
如果是RESTful风格的API,就是用HTTP的状态码作为返回码;
如果只是简单的HTTP+JSON的API,需要在返回的JSON里面写例如{"code": 1, "msg": "parameter invalid"}
之类的信息。
最重要的是:需要在文档中设计一份返回码和错误含义的列表。这份列表可以是整个项目一套,也可以是一个API一套。code
的范围可以自己定,但一般0都表示成功。
引用一下我正在翻译的 HTTP API 设计指南
为每一次的响应返回合适的HTTP状态码. 好的响应应该使用如下的状态码:
200
: GET
请求成功, 及DELETE
或PATCH
同步请求完成,或者PUT
同步更新一个已存在的资源201
: POST
同步请求完成,或者PUT
同步创建一个新的资源202
: POST
, PUT
, DELETE
, 或 PATCH
请求接收,将被异步处理206
: GET
请求成功, 但是只返回一部分,参考:上文中范围分页
使用身份认证(authentication)和授权(authorization)错误码时需要注意:
401 Unauthorized
: 用户未认证,请求失败403 Forbidden
: 用户无权限访问该资源,请求失败当用户请求错误时,提供合适的状态码可以提供额外的信息:
422 Unprocessable Entity
: 请求被服务器正确解析,但是包含无效字段429 Too Many Requests
: 因为访问频繁,你已经被限制访问,稍后重试500 Internal Server Error
: 服务器错误,确认状态并报告问题对于用户错误和服务器错误情况状态码,参考: HTTP response code spec
微信的接口的错误码定义,看看它的接口调用,供参考
http://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html
我也是参考微信的全局返回码,以Http+JSON作为应答消息
格式为:{"errCode": code, "errMsg": "msg", "data": {}}
code 习惯上去0为success, -1 为fail,其它是 模块号+错误号拼装
如果走REST的话可以把状态码放到HTTP响应状态码里面,同时尽可能的遵从HTTP状态码规范。
如果直接在接口的返回值里面规定状态码的话,我个人的习惯是:正常为0,并且返回数据里面不需要错误描述字段了;其他数值表示为错误,并且带有简单的错误描述字段。错误码的数值在规定的时候把统一类型的错误放到相近的一段值上,比如这样: