为什么服务器返回协议格式错误,http协议的返回状态码规范问题

很多网上那些接口,大多是不符合规范的,说白了就是一群连 HTTP 协议都不懂的人写的 HTTP 服务,毫无参考价值。所以不要纠结那些。为什么 PHP 招黑和这个原因类似,很感激你愿意深究这个问题,为你这种精神必须点赞。

其实我建议你购买此书:《HTTP 权威指南》,很适合你这种有上进心的人。

对于这个问题,实际上你的理解有偏差。

请求过程正确不意味着响应就应当是 200。因为能够获得响应,就已经说明请求 过程 是没有任何问题的,若是请求过程不正确,不是 DNS 异常就是连接超时等等,你连响应码都看不到的。

所以响应码是用来标识 HTTP 服务器收到请求后,对此响应给出的结果。

为此,主要 划分了 2xx、3xx、4xx、5xx 这几种,2 打头的肯定是成功(不仅仅是 200 哦),3 开头的往往是无异常,但可能资源不是直接从你这个请求获取的,比如 302 重定向,304 缓存未过期等等。

重点来了,4 打头的,往往是请求存在异常,比如你所谓的提交的数据格式不正确 400 或 422,请求需要授权的 401,因为某种原因(权限不足或者黑名单)导致的拒绝用 403,请求的数据不存在或者该数据不想被当前请求获取用 404(很熟悉吧),请求方法被拒绝用 405,比如修改数据应该用 PUT 请求、新增数据用 POST,获取数据用 GET,删除数据用 DELETE 请求等等(还有常见的 OPTIONS 和 HEAD 请求哦),当然,4 开头的响应码最多,可以在百科(不论啥百科)都有 HTTP 状态码的详细文章。

5 开头的主要是服务器错误,不是因为请求的错误引起的异常都是用 5 开头的状态码,比如 500 服务器异常、503 服务器无法提供服务。HTTP 状态码是在 RFC 一系列标准文件中定义的,因此不能够完全适应所有的接口提示细节,但已经能够完全涵盖大部分响应的语义。对于细节提示,接口响应中往往会单独在设置一个状态响应码,用来弥补 HTTP 状态码对于细节问题的表现力不足的情况。比如都是请求格式错误,但是缺少某个参数和参数给多了,都是 400,如果想要让客户端清楚地知道发生了什么,你还需要在接口中额外定义一些东西,辅助这类情况。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值