🧨🧨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都是给服务器发送新增资源,有什么区别?

相关推荐
小白小白从不日白9 分钟前
react 组件通讯
前端·react.js
Redstone Monstrosity27 分钟前
字节二面
前端·面试
东方翱翔34 分钟前
CSS的三种基本选择器
前端·css
Fan_web1 小时前
JavaScript高级——闭包应用-自定义js模块
开发语言·前端·javascript·css·html
yanglamei19621 小时前
基于GIKT深度知识追踪模型的习题推荐系统源代码+数据库+使用说明,后端采用flask,前端采用vue
前端·数据库·flask
千穹凌帝1 小时前
SpinalHDL之结构(二)
开发语言·前端·fpga开发
dot.Net安全矩阵1 小时前
.NET内网实战:通过命令行解密Web.config
前端·学习·安全·web安全·矩阵·.net
Hellc0071 小时前
MacOS升级ruby版本
前端·macos·ruby
UestcXiye1 小时前
面试算法题精讲:求数组两组数差值和的最大值
面试·数据结构与算法·前后缀分解
严格格2 小时前
三范式,面试重点
数据库·面试·职场和发展