Http 常用请求方式和返回状态码

Http 常用请求方式和返回状态码,第1张

很多 Web 开发人员只知道 Http 请求方式有 Get 和 Post 两种,对于请求返回状态码更是知之甚少,基础的 200, 404, 403, 500 等。作为想更上一层的软件开发人员,这些是远远不够的,所以我介绍一下在 Http 请求中的常用请求方式和返回状态码。

200 OK : 请求成功并返回数据;

201 Created : 资源创建成功并返回资源数据;

202 Accepted : 接受请求,但无法立即完成创建行为,返回的实体中应该包含当前状态的信息,以及指向处理状态监视器或状态预测的指针,以便客户端能够获取最新状态;

204 No Content : 请求成功不返回数据,通常用于 Delete;

重定向的新地址需要虚戚在响应头 Location 中返回

301 Moved Permanently : 被请求的资源已永久移动到新位置;

302 Found : 请求的资源现在临时从不同的 URI 响应请求;

303 See Other : 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该使用 GET 方法进行请求。比如在创建已经被创建的资源时,可以返回 303;

307 Temporary Redirect : 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该保持原有的请求方法进行请求;

304 Not Modified : 资源自从上次请求后没有再次发生变化,主要使用场景在于实现数据缓存;

409 Conflict : 请求 *** 作和资源的当前状态存在冲突。主要使用场景在于实现并发控制;

412 Precondition Failed : 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。主要使用场景在于实现并发控制;

400 Bad Request : 请求体包含语法错误;

401 Unauthorized : 需要验证用户身租乎份或认证失败 ;

403 Forbidden : 服务器拒绝执行;

404 Not Found : 找不到目标资源;

405 Method Not Allowed : 所请求的 HTTP 方法不允许当前认证用户访问;

406 Not Acceptable : 服务器不支持客户端请求的内容格式;

410 Gone : 被请求的资源已被删除,只有在确定了这种情况是永久性的时候才可以使用,否则建议使用 404 Not Found;

413 Payload Too Large : POST 或者 PUT 请求的消息实体过大;

415 Unsupported Media Type : 服务器不支持请求中提交弊誉悉的数据的格式;

422 Unprocessable Entity : 请求格式正确,但是由于含有语义错误,无法响应;

428 Precondition Required : 要求先决条件,如果想要请求能成功必须满足一些预设的条件;

500 Internal Server Error : 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理;

501 Not Implemented : 服务器不支持当前请求所需要的某个功能;

502 Bad Gateway : 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应;

503 Service Unavailable : 服务器维护或者过载,服务器当前无法处理请求;

更多信息可查看 Api设计指北 !

文章同步发布在我的个人博客中,传送门 Hesunfly Blog

状态码的职责是当客户端向服务器发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求还是出现了错误。

状态码的类别:

1XX Informational(信息性状态码) 接受的请求正在处理

2XX Success(成功状态码) 请求正常处理完毕

3XX Redirection(重定向状态码) 需要进行附加 *** 作以完成请求

4XX Client Error(客户端错误状态码) 服务器无法处理请求

5XX Server Error(服务器厅陆渗错误状态码) 服务器处理请求出错

2XX——表明请求被正常处理了

1、200 OK:请求已正常处理。

2、204 No Content:请求处理成功,但没有任何资源可以返回给客户端,一般在只需要从客户端往服务器发送信息扮脊,而对客户端不需要发送新信息内容的情况下使用。

3、206 Partial Content:是对资源某一部分的请求,该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容。

3XX——表明浏览器需要执行某些特殊的处理以正确处理请求

4、301 Moved Permanently:资源的uri已更新,你也更新下你的书签引用吧。永久性重定向,请求的资源已经被分配了新的URI,以后应使用资源现在所指的URI。

5、302 Found:资源的URI已临时定位到其他位置了,姑且算你已经知道了这个情况了。临时性重定向。和301相似,但302代表的资源不是永久性移动,只是临时性性质的。换句话说,已移动的资源对应的URI将来还有可能发生改变。

6、303 See Other:资源的URI已更新,你是否能临时按新的URI访问。该状态码表示由于请求对应的悉首资源存在着另一个URL,应使用GET方法定向获取请求的资源。303状态码和302状态码有着相同的功能,但303状态码明确表示客户端应当采用GET方法获取资源,这点与302状态码有区别。

当301,302,303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。

7、304 Not Modified:资源已找到,但未符合条件请求。该状态码表示客户端发送附带条件的请求时(采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部)服务端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304.。

8、307 Temporary Redirect:临时重定向。与302有相同的含义。

4XX——表明客户端是发生错误的原因所在。

9、400 Bad Request:服务器端无法理解客户端发送的请求,请求报文中可能存在语法错误。

10、401 Unauthorized:该状态码表示发送的请求需要有通过HTTP认证(BASIC认证,DIGEST认证)的认证信息。

11、403 Forbidden:不允许访问那个资源。该状态码表明对请求资源的访问被服务器拒绝了。(权限,未授权IP等)

12、404 Not Found:服务器上没有请求的资源。路径错误等。

5XX——服务器本身发生错误

13、500 Internal Server Error:貌似内部资源出故障了。该状态码表明服务器端在执行请求时发生了错误。也有可能是web应用存在bug或某些临时故障。

14、503 Service Unavailable:抱歉,我现在正在忙着。该状态码表明服务器暂时处于超负载或正在停机维护,现在无法处理请求。

参考文献:图解HTTP【日】上野宣 著 于均良 议

转自: https://blog.csdn.net/qq_35689573/article/details/82120851

基本全部参考: http://web.jobbole.com/87212/

我并不完全确定它们真的重要段雹。

Facebook 上有许多聪明人, 他们创建了 API 只返回 200 。

反对挑选指定状态码的基本观点是:现有的状态码对于现代网站/API来说太通用了。它无法让客户端以任何一种有意义的方式处理包含特定应用格式的细节的返回信息 —— 例如饥燃瞎表单的哪一个字段校验失败了以及为什么失败了。既然如此,那么为什么要在多余的没烂空什么用的 HTTP 状态码上浪费时间?

如果要给出一个理由,来说明为什么使用特定的状态码很重要, 公认的理由 是 HTTP 是一个分层的系统,如果响应状态码是有特定含义的,任何代理、缓存或者位于客户端和服务器之间的 HTTP 框架能够更好地工作。我不认为这个理由足够更令人信服,尤其现在每个人都开始将服务迁移到 HTTPS,我们禁止了任何不被服务器直接控制的代理或缓存节点。

然而,我会给你三个理由为什么我认为状态码仍然很重要:

在这里面,决定什么时候返回何种状态码是最难的,然而有了正确的知识(别再说我不知道,仔细看前面的流程图),挑选一个有意义的状态码变得简单很多。

别去研究 RFC 2616 ,更别去研究 RFC 2068 ,真正有用的是 RFC 7231 。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11991192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存