新手问题 给手机用的 Web API 应该返回什么样的错误信息

cxh116 · 2013年11月21日 · 最后由 dddd1919 回复于 2013年11月21日 · 3363 次阅读

目前的仿 github 的,返回的消息格式有点不一致. Java 端调用时,因为格式不统一,自动映射有点困难.

比如 github 的 403 错误一般是直接给个 message,errors 无

{
    "message": "API rate limit exceeded. See http://developer.github.com/v3/#rate-limiting for details."
}

422 错误时返回的带 errors,这样的格式貌似手机端解析出来不太好显示给用户,得自己解析 code 再显示自己写的错误信息. 另外碰到非 field 错误时应该怎么处理.例如找回密码,邮箱等信息是正确的,但是发送邮件的时候失败了,那应该返回什么样的信息格式给调用端.

{
   "message": "Validation Failed",
   "errors": [
     {
       "resource": "Issue",
       "field": "title",
       "code": "missing_field"
     }
   ]
 }

twiiter 的消息格式不错,直接返回一个 errors 父接点,数组里面再是错误信息与对应的 code.需要直接显示错误的直接显示,不想直接显示自己判断 code,再显示自己的错误信息. 也许可以考虑再加入一个 field 字段,这样手机端就能很好的定位是那个输入框的数据有问题,从而高亮提醒用户.

{"errors":[{"message":"Bad Authentication data","code":215}]}

github 的错误响应文档: http://developer.github.com/v3/#client-errors twitter 的错误响应文档 https://dev.twitter.com/docs/error-codes-responses

待讨论的问题有两点

  • 错误消息的格式
  • 错误代码的设计

另外自己碰到一个坑,list 返回最好包含一个 root 接点,像 github 一样直接返回一个数组,Java 是不能很好处理自动映射的. http://developer.github.com/v3/issues/#list-issues

返回值最好自定义,什么code erroes messages status这类的选择性使用,最终目的是方便追踪问题或友好提示或......习惯写成个 hash,便于定位

需要 登录 后方可回复, 如果你还没有账号请 注册新账号