(四) 错误代码和错误信息的处理 - Build API For Your Company 系列

介绍


异常处理 是必须处理的一块内容,当发生错误时(用户提交无效的请求、服务器出错等等),我们需要让用户知道什么地方出错了,没有任何错误反馈是很让人无语的。目前主要采用这两种方式来处理异常:

  • HTTP Status Codes
  • Custom error codes and messages

HTTP 状态码概要 (200-507):

2xx -- All about success - 用户请求被接受并返回响应
200 - Generic everything is ok.
201 - Creating something is ok.
202 - 请求被接受并返回响应,但是会被异步处理
204 - No Content

3xx -- All about redirection
301 - 永久性的重定向
303 - See other

4xx -- All about client errors 
这些状态码意味着客户端做了一些错误或者无效的操作,需要用户在发送数据之前重新检查数据;
400 - Wrong Request.
401 - Unauthorized.
403 - The current user is Forbidden from acessing the data.
404 - The URL is not a valid route, or item resource does
    not exist.
405 - Method Not Allowed
410 - Data has been deleted, deactived, suspended, etc.

5xx - All about server errors -- 意味着服务发生了状况,例如数据库链接失败,业务逻辑出错等等;
500 - Something unexpected happened and it is the APIs fault.
503 - API is not here right now. Please try later.

如果你维护服务器(Nginx),可能会对 502 这个代码有印象,它表示你的 PHP-FPM 出错了。507 可能意味着你的硬盘挂了。

上面只是一些常用的状态码,如果你想参考一下完整的状态码解释列表,在这里 REST && WOA Wiki

还有一篇不错的文章推荐给你: Using HTTP status codes in a REST service

状态码的 RFC(2616) 标准:
http://www.rfc-editor.org/rfc/rfc2616.txt

自定义的错误代码和错误信息

HTTP 状态码有时候满足不了我们的需求,所以有些应用的API会自己定义一套错误代码来记录处理错误信息(这样处理的时候也更方便,更直观,但是需要去维护,个人观点),这些一般都会记录在API文档里面:

{"errors":[{"message":"Sorry, that page does not exist","code":34}]}

这是 twitter 的错误响应返回格式, 可以在它的开发者官网看到详细的解释:

https://dev.twitter.com/overview/api/respo...

这种格式个人认为还是非常不错的,实际开发中很方便。

当然在 laravel 中有很棒的扩展包帮助我们规范这些流程 Dingo , 你可以先去浏览一下这个包的 wiki,以后的系列中也会再说到这个包的使用的

https://github.com/dingo/api/wiki


Say Something

本来说是在这篇文章里面讲 POST MAN 和其他的一些测试工具的,但是看来放到下篇 接口测试 的文章里其实更合适,嘿嘿。最近毕业一大堆事情要忙,时间紧迫啊。但是还是会把 Laravel 聚会 给办起来的,大神,给我力量吧。。

Remote. Open. Engineer.
本帖已被设为精华帖!
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!