查看原文
其他

字节一面:HTTP 常见的状态码有哪些?

Guide JavaGuide 2022-10-28
👉欢迎准备 Java 面试以及学习 Java 的同学加入我的知识星球,干货很多!收费虽然是白菜价,但星球里的内容或许比你参加上万的培训班质量还要高。
👉《Java 面试指北》持续更新完善中!这是一份教你如何更高效地准备面试的小册,涵盖常见八股文(系统设计、常见框架、分布式、高并发 ......)、优质面经等内容。

你好,我是 Guide。分享一道群友面试字节遇到的 HTTP 状态码相关的面试真题:”HTTP 常见的状态码有哪些?“。

下面是正文。

HTTP 状态码用于描述 HTTP 请求的结果,比如2xx 就代表请求被成功处理。

状态码

1xx Informational(信息性状态码)

相比于其他类别状态码来说,1xx 你平时你大概率不会碰到,所以这里直接跳过。

2xx Success(成功状态码)

  • 200 OK :请求被成功处理。比如我们发送一个查询用户数据的HTTP 请求到服务端,服务端正确返回了用户数据。这个是我们平时最常见的一个 HTTP 状态码。
  • 201 Created :请求被成功处理并且在服务端创建了一个新的资源。比如我们通过 POST 请求创建一个新的用户。
  • 202 Accepted :服务端已经接收到了请求,但是还未处理。
  • 204 No Content :服务端已经成功处理了请求,但是没有返回任何内容。

这里格外提一下 204 状态码,平时学习/工作中见到的次数并不多。

HTTP RFC 2616对204状态码的描述如下:

The server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation. The response MAY include new or updated metainformation in the form of entity-headers, which if present SHOULD be associated with the requested variant.

If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to take place without causing a change to the user agent's active document view, although any new or updated metainformation SHOULD be applied to the document currently in the user agent's active view.

The 204 response MUST NOT include a message-body, and thus is always terminated by the first empty line after the header fields.

简单来说,204状态码描述的是我们向服务端发送 HTTP 请求之后,只关注处理结果是否成功的场景。也就是说我们需要的就是一个结果:true/false。

举个例子:你要追一个女孩子,你问女孩子:“我能追你吗?”,女孩子回答:“好!”。我们把这个女孩子当做是服务端就很好理解 204 状态码了。

3xx Redirection(重定向状态码)

  • 301 Moved Permanently :资源被永久重定向了。比如你的网站的网址更换了。
  • 302 Found :资源被临时重定向了。比如你的网站的某些资源被暂时转移到另外一个网址。

4xx Client Error(客户端错误状态码)

  • 400 Bad Request :发送的HTTP请求存在问题。比如请求参数不合法、请求方法错误。
  • 401 Unauthorized :未认证却请求需要认证之后才能访问的资源。
  • 403 Forbidden :直接拒绝HTTP请求,不处理。一般用来针对非法请求。
  • 404 Not Found :你请求的资源未在服务端找到。比如你请求某个用户的信息,服务端并没有找到指定的用户。
  • 409 Conflict :表示请求的资源与服务端当前的存状态在冲突,请求无法被处理。

5xx Server Error(服务端错误状态码)

  • 500 Internal Server Error :服务端出问题了(通常是服务端出Bug了)。比如你服务端处理请求的时候突然抛出异常,但是异常并为在服务端被正确处理。
  • 502 Bad Gateway :我们的网关将请求转发到服务端,但是服务端返回的却是一个错误的响应。

参考

  • https://www.restapitutorial.com/httpstatuscodes.html
  • https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
  • https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
  • https://segmentfault.com/a/1190000018264501

马上秋招就来了,最近一直在抽时间更新面试真题(原创不易,有帮助的话,点赞分享就是对 Guide 最大的鼓励):

    ··········  END  ··············

    欢迎加入我的知识星球获取更多面试干货,《Java 面试指北》持续更新完善中!

    近期文章精选 :

    走近作者 :

    如果本文对你有帮助的话,欢迎 点赞&在看&分享 ,这对我继续分享&创作优质文章非常重要。非常感谢!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存