HTTP 状态码是 Web 服务器返回给客户端 (浏览器) 的 3 位数值代码。它表示请求的处理结果,可以分为信息、成功、重定向、客户端错误、服务器错误 5 个类别。
这 5 个类别是 1xx (信息)、2xx (成功)、3xx (重定向)、4xx (客户端错误)、5xx (服务器错误)。在短链接服务中特别重要的是 200 (成功)、301/302/307 (重定向)、404 (Not Found)、429 (Too Many Requests)、500 (Internal Server Error)。
下面整理实务中容易混淆的状态码组合。301 与 302 的差别是「永久与临时」,307 与 302 的差别是「保持方法与有可能改变方法」,403 与 401 的差别是「授权的问题 (没有权限) 与认证的问题 (没有登录)」,404 与 410 的差别则是「找不到 (有可能恢复) 与已被完全删除」。
在短链接服务中,重定向时对状态码的选择关系到服务的根基。需要做点击分析就用 302,希望搜索引擎把目标地址视为规范 URL 的永久重定向就用 301,API 超过速率限制时返回 429,这是基本的用法区分。错误响应除了要带上合适的状态码,还要向用户返回易于理解的错误信息,这一点很重要。