当前位置: 首页 > news >正文

HTTP 请求方法(method)介绍

目录

一、GET

二、POST

三、其他方法

3.1 PUT

3.2 DELETE

3.3 HEAD

3.4 OPTIONS

3.5 TRACE

3.6 CONNECT

3.7 PATCH

3.8 LINK 和 UNLINK(扩展方法)


HTTP(超文本传输协议)定义了多种请求方法,如:

一、GET

GET 是最常用的 HTTP 方法。 常用于获取服务器上的某个资源。在浏览器中直接输入 URL,此时浏览器就会发送出一个 GET 请求。另外,HTML 中的 link, img, script 等标签,也会触发 GET 请求。
以下是一条get请求的结果:
GET https://www.sogou.com/ HTTP/1.1
Host: www.sogou.com
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/w
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: SUID=19AA8B7B6E1CA00A000000005F9A2F76; SUV=1603940214073598; pgv_pvi=266
GET 请求的特点:
  • 首行的第一部分为 GET。
  • URL 的 query string 可以为空, 也可以不为空。
  • header 部分有若干个键值对结构。
  • body 部分为空。
对于Get请求长度的问题:实际 URL 的长度取决于浏览器的实现和 HTTP 服务器端的实现。 在浏览器端,不同的浏览器最大长度是不同的,但是现代浏览器支持的长度一般都很长;在服务器端,一般这个长度是可以配置的。

二、POST

POST 方法也是一种常见的方法,多用于提交用户输入的数据给服务器(例如登陆页面)。
通过 HTML 中的 form 标签可以构造 POST 请求,或者使用 JavaScript 的 ajax 也可以构造 POST 请求。

以下是一条post请求的结果:

POST https://v.bitedu.vip/tms/login HTTP/1.1
Host: v.bitedu.vip
Connection: keep-alive
Content-Length: 105
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS
Content-Type: application/json;charset=UTF-8
Access-Control-Allow-Origin: *
Accept: application/json, text/plain
Access-Control-Allow-Headers: Content-Type, Content-Length, Authorization, Accep
Origin: https://v.bitedu.vip
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://v.bitedu.vip/login
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: username=123456789; rememberMe=true
{"username":"123456789","password":"xxxx","code":"jw7l","uuid":"d110a05ccde64b16
POST 请求的特点:
  • 首行的第一部分为 POST。
  • URL 的 query string 一般为空 (也可以不为空)。
  • header 部分有若干个键值对结构。
  • body 部分一般不为空。body 内的数据格式通过 header 中的 Content-Type 指定,body 的长度由 header 中的 Content-Length 指定。
经典面试题: 谈谈 GET 和 POST 的区别
语义不同: GET 一般用于获取数据,POST 一般用于提交数据。
GET 的 body 一般为空,需要传递的数据通过 query string 传递,POST 的 query string 一般为空,需要传递的数据通过 body 传递
GET 请求一般是幂等的,POST 请求一般是不幂等的。(如果多次请求得到的结果一样, 就视为请求是幂等的)。
GET 可以被缓存,POST 不能被缓存。(这一点也是承接幂等性)。

三、其他方法

3.1 PUT

作用:用于更新指定资源的全部内容。

特点:会用请求中包含的实体完全替换目标资源的当前内容;是幂等的,多次更新同一资源的结果是相同的。

示例:如果有一个 API 允许你更新一篇文章的全部内容,你可以使用 PUT 请求将新的文章内容发送给服务器。

3.2 DELETE

作用:用于删除指定的资源。

特点:明确地请求服务器删除特定的资源;是幂等的,多次删除同一个资源的结果是相同的(如果资源已经被删除,再次删除不会产生额外的影响)。

示例:当你需要从服务器上删除一篇文章或一个文件时,可以发送 DELETE 请求。

3.3 HEAD

作用:与 GET 方法类似,但只返回 HTTP 头部信息,不返回实体内容。

特点:可以快速检查资源的有效性、获取资源的元数据等,而无需下载整个资源的内容;是安全的且幂等的。

示例:在检查一个网页是否存在或者获取网页的最后修改时间等信息时,可以使用 HEAD 请求。

3.4 OPTIONS

作用:用于获取目标资源所支持的 HTTP 请求方法和其他选项。

特点:可以帮助客户端确定服务器对特定资源支持哪些操作;通常用于跨域请求的预检(preflight),以确定实际请求是否可以安全地发送。

示例:当一个网页中的 JavaScript 代码尝试向不同源的服务器发送请求时,浏览器可能会先发送 OPTIONS 请求来确定服务器是否允许该请求。

3.5 TRACE

作用:用于沿着到目标资源的路径执行一个消息环回测试,以诊断中间服务器的问题。

特点:服务器会将收到的请求消息作为响应的实体内容返回给客户端,以便客户端查看请求经过的中间节点对请求做了哪些处理;主要用于调试和诊断目的。

示例:在排查网络问题或者检查代理服务器的行为时可能会用到 TRACE 请求。

3.6 CONNECT

作用:用于建立一个到由目标资源标识的服务器的隧道。

特点:通常用于启动与代理服务器的 SSL 加密连接;不是安全的,也不是幂等的,因为它建立的连接可能会导致不同的交互。

示例:当通过 HTTPS 代理访问一个安全网站时,可能会使用 CONNECT 请求来建立与目标服务器的加密连接。

3.7 PATCH

作用:用于对资源进行部分更新。

特点:与 PUT 不同,PATCH 只更新资源的一部分,而不是全部替换;不是幂等的,因为多次部分更新可能会导致不同的结果。

示例:如果要更新一篇文章的部分内容,比如只修改文章的标题,而不影响其他部分,可以使用 PATCH 请求。

3.8 LINK 和 UNLINK(扩展方法)

作用:LINK 用于在两个已存在的资源之间建立关联;UNLINK 用于移除两个资源之间的关联。

特点:这些方法在一些特定的应用场景中使用,不是所有的服务器都支持;不是安全的,也不是幂等的,因为它们会改变资源之间的关系。

示例:在某些内容管理系统中,可能会使用 LINK 和 UNLINK 方法来管理资源之间的关系,比如将一篇文章与一个分类关联起来或解除这种关联。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度学习(DL)算法分分类
  • nacos适配人大金仓以及达梦-2.41
  • Golang | Leetcode Golang题解之第384题打乱数组
  • HarmonyOS NEXT开发:UI导航栏组件-NavigationBarView
  • 【JS】如何给fetch添加超时功能
  • 【MySQL】如何优化 SQL UPDATE 语句以提升性能
  • 录制黑神话:悟空背景音,制霸你的手机铃声(游戏录制教程)
  • Codeforces Round 970 (Div. 3)
  • 什么是外卖霸王餐系统?有什么特点?
  • 怎么用golang实现一个简易版c++的FIFO队列?
  • Vue——认识day05_监视属性
  • Apifox使用学习
  • Java:正则表达式 matches
  • 如何在D盘创建虚拟环境?包括安装PyTorch和配置PyCharm
  • 服务器数据恢复—LeftHand存储中raid5阵列多块磁盘离线的数据恢复案例
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • docker容器内的网络抓包
  • EOS是什么
  • es6
  • ES6语法详解(一)
  • extjs4学习之配置
  • JAVA之继承和多态
  • js算法-归并排序(merge_sort)
  • Linux下的乱码问题
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Node 版本管理
  • React16时代,该用什么姿势写 React ?
  • STAR法则
  • Unix命令
  • webpack4 一点通
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 使用Swoole加速Laravel(正式环境中)
  • 首页查询功能的一次实现过程
  • 我有几个粽子,和一个故事
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​虚拟化系列介绍(十)
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #vue3 实现前端下载excel文件模板功能
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (11)MATLAB PCA+SVM 人脸识别
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (C语言)字符分类函数
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (过滤器)Filter和(监听器)listener
  • (算法)Game
  • (一)80c52学习之旅-起始篇
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .bat批处理(四):路径相关%cd%和%~dp0的区别