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

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

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

相关文章

C++对C的扩充(8.28)

1.使用C手动封装一个顺序表&#xff0c;包括成员数组1个&#xff0c;成员变量n个 代码&#xff1a; #include <iostream>using namespace std;//类型重命名 using datatype int; #define MAX 30struct seqList { private: //私有权限datatype *data; //相当于 …

AI赚钱成功案例|像素级拆解一键生成提示词 文生图 图生视频

本文背景 之前弄了个诗词转画面大师&#xff0c;就是你给个句子&#xff0c;它就能给你画面提示词&#xff0c;接着用 AI 绘图软件能生成很棒的画面&#xff0c;再把图片弄成视频&#xff0c;最后能出个不错的作品。 最近看到那些漫剪大师的作品&#xff0c;配的歌好听&#xf…

NameNode 的 Web 界面

http://127.0.0.1:50070/ 图片显示的是Hadoop的Web界面导航栏。导航栏包含以下选项&#xff1a; Hadoop&#xff1a;Hadoop的主页。Overview&#xff1a;集群的概览信息。Datanodes&#xff1a;数据节点的状态和信息。Datanode Volume Failures&#xff1a;数据节点的卷故障信…

Java项目: 基于SpringBoot+mysql旅游网站管理系统分前后台(含源码+数据库+开题报告+PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql旅游网站管理系统分前后台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作…

011.Python爬虫系列_bs4解析

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数…

尚硅谷Vue入门视频 笔记

尚硅谷视频&#xff1a;https://www.bilibili.com/video/BV1Zy4y1K7SH/?spm_id_from333.999.0.0&vd_sourcecec13bbe100bddfff8baf29d18ed8994 文章目录 模板语法data与el的2种写法MVVM模型事件事件修饰符事件的基本使用 计算属性简写形式 监视属性绑定样式条件渲染列表渲…

vue3+ts+vite+electron+electron-store+electron-builder打包可安装包

yarn create vite yarn add electron yarn add electron-store yarn add electron-builder 新增main.js、preload.js // main.js const { app, BrowserWindow, ipcMain, globalShortcut } require(electron) const path require(path) let store // 我们将在稍后动态导入 el…

关于几道计算机网络题的解答

2017年12月28日&#xff0c;星期四&#xff0c; 照片上的第一题中多项式的指数看不清&#xff0c;但没关系&#xff0c;就现在的情形&#xff0c;说一下大概的思路&#xff0c;参考着再结合题目中实际的参数&#xff0c;再套一遍就能把题目解出来了&#xff0c; 假设&#xf…

raksmart大带宽服务器怎么租

RAKsmart是一个提供大带宽服务器租赁服务的厂商&#xff0c;其机房遍布不同国家与地区如美国、日本、新加坡及韩国等&#xff0c;且有大陆优化和国际BGP两条线路可供选择。Rak小编下面将详细介绍如何租用RAKsmart的大带宽服务器&#xff0c;并提供一些考量因素。 1. 选择机房位…

中兴-ZSRV2路由器-任意文件读取

中兴-ZSRV2路由器-任意文件读取 文章目录 中兴-ZSRV2路由器-任意文件读取免责声明漏洞描述搜索语法漏洞复现修复建议 免责声明 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与教学之用&#xff0c;读者将其信息做其他用途&#xff0c;由用户承担全部法律及连…

NSSCTF刷题

[NISACTF 2022]checkin 1.在选中nisactf的时候&#xff0c;注释里面的内容也被标记了 2.复制到010editer中发现存在不可见的字符 3.我们选择实际的参名和字符串&#xff0c;并转为url编码格式 4.得到最后的payload&#xff0c;传参得到flag ahahahahajitanglailo&%E2%80%…

第十三节:学习Springboot整合mybatis——完整篇(自学Spring boot 3.x的第三天)

大家好&#xff0c;今天记录下学习springboot的第三天。​网创有方 这节详细记录了如何使用springboot整合mybatis方法&#xff0c;并成功实现将请求信息插入本地的mysql数据库。 由于只是为了方便本地验证&#xff0c;实际项目是需要部署到服务器上去的&#xff0c;所以就采用…

开学啦!校园跑腿小程序开发,焕新生活尽在指尖!

随着移动互联网技术的不断发展&#xff0c;校园跑腿小程序成为了高校生活中不可或缺的一部分。无论是代拿快递、代买物品&#xff0c;还是代办各种事务&#xff0c;校园跑腿小程序都能为学生提供极大的便利。 校园内的人群密集&#xff0c;购买东西的需求尤为强烈&#xff0c;…

2023年中国90后十大影响力人物

“2023年中国90后十大影响力人物” 2024年1月23日&#xff0c;揭晓了由网友投票评选的中国2023年90后十大影响力人物。

每日一练2:两个数组的交集(含链接)

链接&#xff1a; 两个数组的交集_牛客题霸_牛客网 代码&#xff1a; class Solution {public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {bool hash[1001] { };vector<int> ret;for(auto a : nums1){hash[a] tr…

SprinBoot+Vue宠物领养救助微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

Ribbon负载均衡底层原理

springcloude服务实例与服务实例之间发送请求&#xff0c;首先根据服务名注册到nacos&#xff0c;然后发送请求&#xff0c;nacos可以根据服务名找到对应的服务实例。 SpringCloudRibbon的底层采用了一个拦截器&#xff0c;拦截了openfeign发出的请求&#xff0c;对地址做了修…

SpringBoot链路追踪②:如何集成?

首先下载Zipkin的jar包&#xff1a;Central Repository: io/zipkin/zipkin-server (maven.org) 根据自己的项目版本。我的版本分别是&#xff1a; <spring-boot.version>2.7.18</spring-boot.version> <spring-cloud.version>2021.0.8</spring-cloud.ve…

【kafka】在Linux系统中部署配置Kafka的详细用法教程分享

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

文件IO函数练习

作业&#xff1a;使用write和read完成文件的拷贝。 代码 #include <myhead.h>int main(int argc, const char *argv[]) {int fd open("./1.txt",O_RDONLY);//已只读打开被拷贝文件if(-1 fd){perror("open");return -1;}int fd1 open("./2.…