当前位置: 欣欣网 > 码农

面试官:Http 请求方法有几种?只有四种?我只知道四种。。。

2024-04-25码农

引言:Http 请求方法有几种?一部分基础差的同学,只知道两种 GET 和 POST,基础一般知道 4 种,加上 PUT 和 Delete,但实际上其实是有 9 种请求方法(可能更多),本文就带大家来分析下各个方法的作用和使用场景,让大家能够回答这个简单的问题的时候,能够回应一些不简单的回答。

题目

面试官:Http 请求方法有几种?只有四种?我只知道四种...

推荐解析

版本迭代

HTTP 请求方法有几种是和 HTTP 版本有关的,很多面试官可能问的也不严谨,那么这时候你应该指出 HTTP1.0 和 HTTP1.1 以及 HTTP1.1 以后,都新增了哪些请求方法。

HTTP1.0 三种请求方式:GET、POST、HEAD。

HTTP1.1 五种请求方法:OPTIONS、PUT、DELETE、TRACE、CONNECT。

HTTP1.1 之后引入了 PATCH 方法。

总计为九种。

请求方法作用

1)GET 方法发送请求获取服务器上的资源

2)POST 方法向 URL 指定的资源提交数据或者附加新的数据。

3)HEAD 方法,用于获取报文头,没有响应内容。

4)OPTIONS 预检请求,浏览器获取资源前,先发送预检请求,去获取服务器支持的 HTTP 请求方法,第二个作用是用于检查服务器性能,在 CORS 解决跨域的方案中,就会有预检请求。浏览器将 CORS 分为两类:简单请求和非简单请求。简单请求是不会预检的,非简单请求会预检。

同时满足以下三个条件就属于简单请求。

1)请求方式只能是:GET、POST、HEAD

2)HTTP 请求头限制这几种字段:Accept、Accept-Language、Content-Language、Content-Type、Last-Event-ID

3)Content-type 只能取:application/x-www-form-urlencoded、multipart/form-data、text/plain

5)PUT 方法,将请求的数据存储到对应的路由的 URL,一般更新(创建)资源。

6)DELETE 方法:删除服务器上某个资源,比如删除某条表单的记录。

7)TRACE 方法:用于回显服务器收到的请求,测试或诊断。

8)CONNECT 方法:和代理服务器建立隧道连接,一般用于 HTTPS 的代理服务器。

9)PATCH 方法:对某个资源的一部分进行修改。

GET 和 POST 的区别

GET 方法是相对不安全的,因为参数会暴露在 URL 中,如果参数是敏感信息,又没有进行加密,此时就有安全风险。而 POST 请求是安全的,它的请求参数在请求体中,而不是在 URL中,如果用 HTTP 协议那么明文传输,无论是 GET 还是 POST 都是不安全的。

GET 一般用于获取资源,而 POST 用于提交资源。

GET 方法是幂等性的,而 POST 方法不是幂等性的。关于 接口幂等性 大家 可以去好好研究一下,这一块涉及到重复消费和重复支付等等问题,会有很多场景题,问到这一块完全可以结合实际项目去给面试官展开,甚至是前端的防抖和节流,也都可以去讲。

GET 请求一般受到长度限制,一般不传递大数据量,而且 GET 只能传递字符串类型的参数。

POST 请求没有长度的限制,可以大数据量传送,而且支持多种的格式,对象,JSON,字符串等等。

GET 请求是会被缓存的,服务器将会进行记录。POST 请求是不会被缓存的。

GET 请求一个数据包,POST 由于 MTU 和 MSS 可能会进行切割,发送多个数据包,但请求是一次,两次可能是预检,跟 HTTP 版本又有很大关系,深入这块需要自己进行前端抓包实践。

其他补充

鱼聪明 AI 的回答:

鱼聪明 AI 地址:https://www.yucongming.com/

根据HTTP/1.1版本,共定义了8种请求方法,分别是:

  1. GET :用于请求指定的资源。GET请求只是获取数据,不会对服务器端资源产生任何影响,通常用于从服务器获取数据。

  2. POST :向指定资源提交数据进行处理请求。POST请求用于向服务器提交数据,通常用于表单提交、文件上传等操作。

  3. PUT :向指定资源提交数据,但不会对资源产生影响,通常用于更新服务器上的资源。

  4. DELETE :删除指定的资源。

  5. HEAD :类似于GET请求,但服务器只返回头信息,不返回实体主体部分。通常用于获取资源的头信息而不获取实际内容。

  6. OPTIONS :用于获取目的资源所支持的请求方法、通信协议等信息。

  7. TRACE :回显服务器收到的请求,用于测试、诊断。

  8. CONNECT :用于代理服务器与目标服务器之间的通信。

除了以上8种常见的请求方法,HTTP/1.1还定义了一些扩展的请求方法,如PATCH、PROPFIND、PROPPATCH等。这些请求方法通常用于特定的应用场景,具体使用方法可以根据实际需求进行了解和使用。

欢迎交流

在阅读完本文后你应该对 Http 请求方法的种类、作用和主要区别有了一定的了解,在文末还有三个问题去检验本次学习的成果,欢迎小伙伴在评论区交流见解!

1)GET和POST请求方法有什么区别?它们在什么场景下分别应该使用?

2)PUT和PATCH请求方法有何异同?它们在更新资源时有何不同的作用?

3)HEAD请求方法和GET请求方法之间的联系和区别是什么?它们在实际应用中有什么不同的使用场景?

点燃求职热情!每周持续更新,海量面试题和面经等你挑战!赶紧关注面试鸭公众号,轻松备战春招和暑期实习!

往期推荐