HTTP 请求方法(method)介绍

news2024/11/28 11:55:05

目录

一、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 方法来管理资源之间的关系,比如将一篇文章与一个分类关联起来或解除这种关联。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2099702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv计算机视觉识别图像处理c++项目实战python网课程视频教程

课程名称 《OpenCV计算机视觉识别图像处理C实战课程》 课程亮点 全面覆盖:从基础概念到高级技术,涵盖OpenCV的核心功能。实战导向:通过具体项目实践,帮助学员掌握图像处理的实际应用。双语言支持:虽然重点是C&#x…

使用神卓互联内网穿透开发支付宝支付回调环境(Java版)

支付宝支付功能在电商网站和其他在线服务中扮演着重要角色。对于使用Java作为开发语言的应用来说,集成支付宝支付回调功能是必不可少的一部分。为了能够在本地开发环境中测试这一功能,内网穿透技术可以让我们绕过公网IP的限制。下面将介绍如何利用神卓互…

Unity教程(十三)敌人状态机

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

集成电路学习:什么是I/O输入输出

I/O:输入输出 I/O,全称Input/Output,即输入输出,是信息处理系统(如计算机)与外部世界(可能是人类或另一信息处理系统)之间的通信方式。具体来说,输入是系统接收的信号或数…

shell编程--正则表达式

正则表达式 正则表达式都被置于两个正斜杠之间;如/l[oO]ve/ 示例 匹配数字的脚本,用户输入创建账号的数量 语法: [[ ^[0-9]$ ]] 表示必须输入数字 #!/bin/bashwhile : do read -p "输入数字:" numif [[ $num ~ ^[…

springboot整合logback进行日志管理(下篇)

上一篇介绍了springboot整合logback的一些项目中用到的经验,本片文章继续介绍在项目中实际用到的工程经验 1、设想一下有这样一个场景:我想把我所有service层的日志单独打印到service.log中,那应该怎么做? 有人会说了可以配置一…

高收录高权重的采集站源码——码山侠

前端预览:i5i.net——码山侠点击看看 采集非常简单,不伪原创,也不处理种种外链,也不需要什么配图,而且结构也不复杂。 后台管理: 文章发布手动发布及编辑管理后台 采集以及伪原创类工具后台: …

计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习 PySpark

毕业设计题目基于 Hadoop 的共享单车布局规划 二、毕业设计背景 公共交通工具的“最后一公里”是城市居民出行采用公共交通出行的主要障碍,也是建设绿色城市、低碳城市过程中面临的主要挑战。 共享单车(自行车)企业通过在校园、地铁站点、公…

光储充微电网能量管理系统控制策略研究及并网分析

引言 近年来,我国日益重视分布式能源和微电网的发展,特别是光伏系统和储能技术的应用,这些已成为确保电力供应可靠性、促进新能源利用和减少污染的关键措施。我国新能源领域的专家对光伏储能控制系统进行了深入研究,强调了其应用…

【Qt】 QComboBox | QSpinBox

文章目录 QComboBox —— 下拉框QComboBox 属性核心方法核心信号QComboBox 使用 QSpinBox —— 微调框QSpinBox 属性核心信号QSpinBox 使用 QComboBox —— 下拉框 QComboBox 属性 QComboBox —— 表示下拉框 currentText ——当前选中的文本 currentindex ——当前选中的条…

STM32 ADC采样详解

Content 0x00 前言0x01 ADC配置0x02 滤波处理 0x00 前言 在单片机开发过程中,常常涉及到ADC的使用,市面上大部分便宜的传感器都是采用的ADC来获取其数据,如MQ-2 烟雾传感器、光敏传感器等等。 此类传感器工作原理为根据所采集到的数据变化…

Axure健康助理小程序原型图70+页,医疗类高保真高交互模板

作品概况 页面数量:共 70 页 源文件格式:限 Axure RP 9/10,非app软件无源码 适用领域:医疗健康、健康助理 作品特色 本作品为健康助理小程序的Axure原型设计图,属于医疗健康项目,设计规范内容清晰&#…

坐牢第三十三天(手搓string)

一.mystring类 #include <iostream> #include <cstring> // 引入cstring以使用memcpy using namespace std; class myString {char *str; // 记录c风格的字符串int size; // 记录字符串的实际长度int my_capacity; // 记录最大容量 public:// 无参构…

LACP链路聚合

链路聚合包含两种模式&#xff1a;手动负载均衡模式和LACP&#xff08;Link AggregationControl Protocol&#xff09;模式。 手工负载分担模式&#xff1a;Eth-Trunk的建立、成员接口的加入由手工配置&#xff0c;没有链路聚合控制协议的参与。该模式下所有活动链路都参与数…

嵌入式软件--51单片机 DAY 2

一、数码管 1.数码管概况 2.设计 &#xff08;1&#xff09;硬件设计 我们可以通过阴极控制显示的位置&#xff0c;通过阳极控制显示的内容。两个数码管共有8个阴极引脚和16和阳极引脚&#xff0c;如果所有引脚都直接接入MCU&#xff0c;会造成MCU引脚的极大浪费。 为了节省…

Java编程基础-类加载机制

文章目录 基本概念类加载器的层次结构类的加载过程双亲委派模型自定义类加载器注意事项 Java 类加载器&#xff08;Class Loader&#xff09;是 Java 运行时环境的一部分&#xff0c;它负责在应用程序运行时加载类和接口的字节码。类加载器对于 Java 的动态特性和安全性有着至关…

Microsoft DirectML 现在支持 Copilot+ PC 和 WebNN

DirectML 是一个底层应用程序接口&#xff0c;使开发人员能够在任何兼容 DirectX 12 的 AMD、英特尔和英伟达&#xff08;NVIDIA&#xff09;GPU 上运行机器学习工作负载 。它首次出现在Windows 10 的 1903 版本中。最近&#xff0c;微软 开始在 DirectML 中支持现代 SoC 中的N…

新能源汽车超级电容和电池能量管理系统的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 电池模型 4.2 电池荷电状态&#xff08;SOC&#xff09;估算 4.3 超级电容器模型 4.4 能量管理 5.完整工程文件 1.课题概述 新能源汽车的能量管理系统&#xff08;Energy Management System, EMS…

Conda离线部署django

要在没有网络连接的环境中使用conda部署Django&#xff0c;你需要预先在有网络连接的机器上创建一个包含所有必要包的环境&#xff0c;并导出该环境的配置文件。然后&#xff0c;你可以将这个配置文件和必要的包传输到目标机器上进行安装。 下面是详细的步骤&#xff1a; 1. …

mysql优化案例分享

一、mysql介绍 1、InnoDB引擎 mysql5.5.8版本开始后。InnoDB引擎就是默认存储引擎&#xff0c;本文介绍知识点也都是围绕该引擎展开。 知识点1聚集存储 InnoDB引擎采用聚集存储&#xff0c;即每张表的存储都是主键的顺序进行存放&#xff0c;也就是每行存储的物理顺序和主键…