温故知新(2)--程序员不得不知的HTTP Status Code

在网络应用开发蓬勃发展的今天,TCP/IP协议族已经成了网络应用开发不可或缺的一部分,而应用层的HTTP协议更是无法绕开,如果一个程序员连HTTP状态码都不知道是什么的话,十有八九是要遭人白眼的。
在工作中遇到有些同学对HTTP协议概念理解不清或者不知道该怎么使用HTTP状态码,甚至有人误以为“我向Server发送一个HTTP Request,只要能收到一个HTTP Response就说明我代码写对了”,殊不知HTTP Response就是通过不同的StatusCode来区分的。就好比我们去商店买饮料,我们问店员“请给我一瓶饮料”,期望的回答当然是“你好,这是您的饮料”,但事实上的回答回答可能有:“对不起,你要的饮料已经买完了”–404、“对不起,这个饮料只供给会员”–401、“对不起,请您排队稍等”–202、“Can you speak English?”(外国商店,你得说外文)–101…
所以了解HTTP状态码的用途可以更有针对性的对业务进行处理,今天就来回顾下那些常用的HTTP Status Code

1xx

1xx 状态码一般是一个请求的中间状态,一般是信息提示,请求协商

状态码编号状态码标识说明
100Continue请求未结束,应该继续请求
101Switching Protocol协议转换,在使用 Web Socket 的时候就会遇到,下面是一个示例,响应会有一个 Connection:Upgrade 的请求头, Upgrade 会指定要使用的协议名称

2xx

2xx 一般表示请求处理成功

200 OK,请求处理成功

状态码编号状态码标识说明
201Created请求处理成功,并且新资源已经创建
202Accepted请求已经接受,正在处理,尚未处理完成
204No Content响应内容为空,在 asp.net core 中返回一个 Json(null) 的时候就会是一个 NoContent 的结果

3xx

3xx 一般表示重定向

状态码编号状态码标识说明
301Moved Permanently永久重定向
302Found临时重定向
304Not Modified资源未发生修改,可以直接使用浏览器本地缓存
307Temporary Redirect临时重定向请求
308Permanent Redirect永久重定向请求

注意:

  • 301、302 只支持 GET 请求,如果是 POST 请求,重定向后会使用 GET 请求且 Body 数据会丢失
  • 307、308 支持 POST 请求,在 POST 重定向的时候会带上原来请求的 body 再请求新的地址,body 数据不会丢失
  • 302、307 是临时重定向
  • 301、308 是永久重定向,是允许缓存的,浏览器可以缓存

4xx

4xx 一般表示客户端请求错误

状态码编号状态码标识说明
400BadRequest错误请求,一般用来表示请求参数异常,比如请求的某一个参数不能为空,但实际请求是空
401Unauthorized未授权,资源需要授权或登录,而用户没有登录或者没有提供访问所需的 Token 等
403Forbidden禁止访问,当前用户没有权限访问资源,如需要Admin角色的用户,但是请求的用户没有这个角色
404NotFound未找到资源,资源不存在
405Method Not Allowed不允许的方法调用,资源不支持的请求方法,比如资源只允许 GET 请求,但是实际请求使用了 POST 或 DELETE 方法
406Not Acceptable请求的资源客户端不支持处理,比如客户端希望获取 xml 的响应,但是服务器端只支持 JSON 响应
408Request Timeout请求处理超时
409Conflict请求资源冲突,常发生在 PUT 更新资源信息时发生,比如更新时指定资源的 ETAG,但是PUT请求时,资源的 ETAG 已经发生变化
410Gone请求资源在源服务器上不再可用
411Length Required请求需要携带 Content-Length 请求头
412Precondition Failed请求预检失败,请求的某些参数不符合条件
413Payload Too Large请求的参数太大,请求的 body 过大,服务器拒绝处理
414URI Too Long请求的 URI 地址太长,服务器拒绝处理
415Unsupported Media Type不支持的媒体类型或不支持的编码,比如服务器只支持处理 JSON 请求,但是请求是 xml 格式

5xx

5xx 一般表示服务端错误

状态码编号状态码标识说明
500Internal Server Error服务器内部错误
501Not Implemented服务器不支持需要处理请求的功能,比如图片压缩等处理
502Bad Gateway反向代理或网关找不到处理请求的服务器
503Service Unavailable服务不可用
504Gateway Timeout网关超时
505HTTP Version Not Supported不支持的 HTTP 版本,服务器不支持或拒绝处理这个 HTTP 版本的请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值