🧨🧨HTTP 的九种请求方法用途你知道多少

前言

年前面试面了好几家中小厂都问到了 HTTP 的请求方法,把 GET、POST、HEAD、DELETE 这几种讲完就阿巴阿巴断断续续了,所以搞一期文章学习一下。

这篇文章中我们会涉及:

  • HTTP的请求方法有哪些
  • 这些请求方法的用途
  • 【重点】方法之间的区别
    • GET 和 POST 的区别
    • PUT 和 POST 的区别
  • 附上具体面试题

HTTP的请求方法有哪些

  • HTTP1.0定义了三种请求方法: GET , POSTHEAD 方法
  • HTTP1.1新增了五种请求方法:OPTIONS , PUT , DELETE , TRACECONNECT
  • 另外,在HTTP1.1之后的RFC 5789中引入了PATCH方法。

这些请求方法的用途

1. GET 方法

  • 发送一个请求获得服务器上的资源

2. POST 方法

  • 向 URL 指定的资源提交数据或者附加新的数据

3. HEAD 方法

  • 请求页面的头部信息,这些头部信息与 HTTP GET 方法请求时返回的一致

4. OPTIONS 方法

  • 它用于获取当前 URL 所支持的方法。如果请求成功,会有一个 Allow 的头包含类似"Get、Post" 这样的信息

5. PUT 方法

  • PUT方法将请求的数据存储到指定的URL位置,用于创建或更新资源

6. DELETE 方法

  • 删除服务器上的指定的资源

7. TRACE 方法

  • 用于回显服务器收到的请求,主要用于测试或诊断。

8. CONNECT 方法

  • 用于与代理服务器建立隧道连接,通常用于支持HTTPS的代理服务器。

9. PATCH 方法

  • 用于对资源进行部分修改

【重点】每个方法之间的区别

GET和POST的区别

这两种方法在使用场景传递数据方式安全性等方面存在一些区别:

  1. 使用场景:

    • GET: 用于从服务器获取资源,是一种安全幂等 的请求方法。GET请求的参数通常附在URL中,通过查询字符串传递。因为参数暴露在URL中,不适合传递敏感信息。

    • POST: 用于向服务器提交数据,请求服务器进行处理。适合用于提交表单、上传文件等场景。POST请求的数据通常包含在请求体中,而不是在URL中。

    • 👇👇👇注意:"幂等"(Idempotent)是一个重要的概念,指的是对同一操作的多次执行所产生的效果与执行一次的效果相同。一个幂等操作满足以下两个条件:

      • 相同输入产生相同结果
      • 不论执行多少次,效果相同
  2. 数据传递方式:

    • GET: 参数通过URL的查询字符串传递,如?key1=value1&key2=value2。数据附加在URL中,有长度限制,一般不适合传递大量数据
    • POST: 数据通过请求体传递,而不是附加在URL中。可以传递大量数据,且对数据长度没有严格的限制。
  3. 安全性:

    • GET: 参数暴露在URL中,可能被浏览器历史记录、代理服务器等记录。因此,不适合传递敏感信息。由于是幂等的,对服务器状态没有影响。
    • POST: 请求的数据在请求体中,不会暴露在URL中,相对更安全。适合传递敏感信息。POST请求对服务器状态可能有影响,不是幂等的。
  4. 缓存:

    • GET: 结果可以被缓存,因为GET请求是幂等的,对服务器状态没有影响。
    • POST: 结果不能被缓存,因为POST请求可能对服务器状态产生影响,不是幂等的。
  5. 书签:

    • GET: 可以被书签化,因为GET请求只是获取数据,不对服务器产生影响。
    • POST: 不适合被书签化,因为POST请求可能导致服务器状态变化,不是幂等的。

PUT和POST的区别

这两者在用途、数据处理方式以及幂等性等方面存在一些区别:

  1. 用途:

    • PUT: 用于将请求的数据存储到指定的URL位置,通常用于更新资源或在服务器上创建新资源。PUT请求要求客户端提供完整的资源数据,对于已存在的资源,是整体替换。
    • POST: 用于向指定资源提交数据,请求服务器进行处理。通常用于提交表单、上传文件等场景,且不要求客户端提供完整的资源数据。POST请求可以用于创建新资源,也可以用于更新资源的一部分。
  2. 数据处理方式:

    • PUT: 要求客户端提供完整的资源数据,服务器将该数据存储到指定的URL位置。如果URL已存在相同资源,通常是整体替换。
    • POST: 不要求客户端提供完整的资源数据,数据通常包含在请求体中。服务器根据请求执行相应的处理,可能是创建新资源或更新部分资源。
  3. 幂等性:

    • PUT: 幂等的。多次执行相同的PUT请求对服务器状态没有额外影响,因为它是整体替换。
    • POST: 通常不是幂等的,因为多次执行相同的POST请求可能会导致服务器上相同资源状态的多次变化。
  4. 安全性:

    • PUT: 通常较安全,因为它是幂等的,而且执行PUT请求不会产生额外的影响。
    • POST: 相对较不安全,因为执行POST请求可能对服务器状态产生影响,且不是幂等的。
  5. 适用场景:

    • PUT: 适用于需要提供完整资源数据,执行整体替换的场景。例如,更新文档或文件的内容。
    • POST: 适用于向服务器提交数据,执行各种处理操作,如表单提交、文件上传等。

附上具体面试题

简要介绍GET和POST请求方法的区别

列举HTTP协议中的几种常见的请求方法及其用途

为什么在表单提交时一般使用POST而不是GET?

HTTP中的幂等性是什么意思?GET和POST请求方法哪个是幂等的?

PUT和POST都是给服务器发送新增资源,有什么区别?

相关推荐
m0_5287238116 分钟前
HTML中,title和h1标签的区别是什么?
前端·html
Dark_programmer16 分钟前
html - - - - - modal弹窗出现时,页面怎么能限制滚动
前端·html
GDAL22 分钟前
HTML Canvas clip 深入全面讲解
前端·javascript·canvas
禾苗种树23 分钟前
在 Vue 3 中使用 ECharts 制作多 Y 轴折线图时,若希望 **Y 轴颜色自动匹配折线颜色**且无需手动干预,可以通过以下步骤实现:
前端·vue.js·echarts
贵州数擎科技有限公司44 分钟前
使用 Three.js 实现流光特效
前端·webgl
JustHappy1 小时前
「我们一起做组件库🌻」做个面包屑🥖,Vue的依赖注入实战💉(VersakitUI开发实录)
前端·javascript·github
拉不动的猪1 小时前
刷刷题16
前端·javascript·面试
哑巴语天雨2 小时前
前端面试-网络协议篇
websocket·网络协议·http·面试·https
01_2 小时前
力扣hot100——LRU缓存(面试高频考题)
leetcode·缓存·面试·lru
祈澈菇凉2 小时前
如何结合使用thread-loader和cache-loader以获得最佳效果?
前端