谈谈 HTTP 的方法

目录

方法及其作用

扩展方法

GET 和 POST 的区别

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

PUT和PATCH都是给服务器发送修改资源,有什么区别?


方法及其作用

  • HTTP/0.9 只有1种请求方法:GET
  • HTTP/1.0 新增请求⽅法:POST 和 HEAD
  • HTTP/1.1 新增请求⽅法:OPTIONS, PUT, DELETE, PATCH, TRACE 和 CONNECT

方法

作用
GET通常⽤于请求服务器发送某些资源
POST向服务器输入数据,通常用来支持 HTML 的表单,表单填好的数据由服务器发送到其他地方
HEAD与 GET 类似,但是响应中只返回首部,不会返回实体的主体部分。通常用于在不获取资源的情况下对资源进行检查,比如下载⼀个⼤⽂件前先获取其⼤⼩再决定是否要下载, 以此可以节约带宽资源
PUT发送资源到服务器,并存储在指定位置,要求客户端提前知道该位置,HTML 表单不支持
OPTIONS用于询问服务器通常支持哪些方法,允许客户端查看服务器的性能
DELETE请服务器删除请求URL所指定的资源,但是客户端无法保证一定删除,服务端可以不通知客户端并撤销请求
PATCH⽤于对资源进⾏部分修改
TRACE 客户端发送的HTTP请求在传输过程中可能会修改,trace方法允许客户端在最终将请求发送给服务器时查看它变成什么样了,可以查看原始报文是否被损坏或者修改了;主要用于诊断,验证请求是否如愿传输到终点
CONNECTHTTP/1.1协议中预留给能够将连接改为管道⽅式的代理服务器

扩展方法

  • Lock 允许用户锁定资源,其他人不能更改
  • Mkcol 允许用户创建资源
  • Copy 便于在服务器上复制资源
  • Move 在服务器上移动资源

上述方法便于用 HTTP 将 web 内容发布到 web 服务器上

GET 和 POST 的区别

  • 数据传输方式不同:GET 请求通过 URL 传输数据,⽽POST的数据通过请求体传输
  • 大小不同GET 提交的数据比较少,因为 GET 是附在 URL 之后的,而 URL 会受不同环境的限制大小;而 POST 可以传送更多数据
  • 安全性不同:POST 的数据因为在请求主体内,可以进行多种编码加密,所以有⼀定的安全性保证;⽽ GET 的数据在 URL 中,只能进行 URL 编码,通过历史记录,缓存很容易查到数据信息
  • 数据类型不同:GET 只允许 ASCII 字符,⽽ POST ⽆限制
  • 数据包,GET 产生1个 TCP 数据包,POST 产生2个 TCP 数据包;GET 请求,浏览器会把HTTP header 和数据一并发送出去,服务器响应200;对于 POST 请求,浏览器先发送header,服务器响应100,然后浏览器发送数据,服务器返回200
  • GET无害: 刷新、后退等浏览器操作GET请求是⽆害的,POST可能重复提交表单

补充:POST 为什么要分成两个数据包发送请求?

其实这么说不够严谨,这是由客户端对 GET 和 POST 的策略决定的。目的是为了避免浪费资源,如带宽、传输时间等。客户端发送 header 的时候添加 expect 100 探探路,如果失败了就不用继续发送 data,从而减少资源浪费。

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

  • PUT ⽅法是幂等的,⽽ POST ⽅法是⾮幂等的。
  • 通常情况下,PUT 的 URI 指向是具体单⼀资源,⽽ POST 可以指向资源集合。

幂等是指同⼀个请求⽅法执⾏多次和仅执⾏⼀次的效果完全相同

举个例⼦,我们在开发⼀个博客系统,当我们要创建⼀篇⽂章的时候往往⽤ POST https://www.jianshu.com/articles ,这个请求的语义是,在 articles 的资源集合下创建⼀篇新的⽂章,如果我们多次提交这个请求会创建多个⽂章,这是⾮幂等的。

⽽ PUT  https://www.jianshu.com/articles/820357430 的语义是更新对应⽂章下的资源(⽐如修改作者名称等),这个 URI 指向的就是单⼀资源,⽽且是幂等的,⽐如你把『刘德华』修改成『刘亦菲』,提交多少次都是修改成『刘亦菲』。

ps: 『POST表示创建资源,PUT表示更新资源』这种说法是错误的,两个都能创建资源,根本区别就在于幂等性。

PUT和PATCH都是给服务器发送修改资源,有什么区别?

PUT 和 PATCH 都是更新资源,⽽ PATCH ⽤来对已知局部资源进⾏更新。
⽐如我们有⼀篇⽂章的地址 https://www.jianshu.com/articles/820357430 ,这篇⽂章可以表示为:

article = {author: 'dxy',creationDate: '2019-6-12',content: '温暖和煦的一天',id: 820357430
}

当我们要修改⽂章的作者时,我们可以直接发送PUT https://www.jianshu.com/articles/820357430 ,这个时候的数据应该是:

{author:'Jasmine',creationDate: '2019-6-12',content: '温暖和煦的一天',id: 820357430
}

这种直接覆盖资源的修改⽅式应该⽤put,但是你觉得每次都带有这么多⽆⽤的信息,那么可以发送 PATCH https://www.jianshu.com/articles/820357430 ,这个时候只需要:

{author:'Jasmine',
}

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

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

相关文章

【Linux】线程周边001之多线程

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.线程的理解 2.地址…

Github 2024-05-16 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目2C++项目1Go项目1HTML项目1CSS项目1Cuda项目1ChatGPT/Gemini UI: 跨平台聊天应用 创建周期:433 天开发语言:TypeSc…

吴恩达深度学习笔记:优化算法 (Optimization algorithms)2.8

目录 第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第二周:优化算法 (Optimization algorithms)2.8 Adam 优化算法(Adam optimization algor…

短视频批量剪辑,智能素材文案生成,多账号授权私信回复与矩阵发布素材功能合集系统,短视频矩阵助手源码搭建部署源码开源部署方案。

目录 一、短视频矩阵助手系统是什么? 二、短视频矩阵助手系统可以为企业解决什么问题? 短视频矩阵助手可以解决哪些问题? 三、短视频矩阵助手系统功能有哪些? 四、总结 一、短视频矩阵助手系统是什么? 短视频矩阵…

提升MySQL性能的秘密:了解表压缩功能的使用及其对性能的影响。

在MySQL数据库的使用中,对于字段类型设计大家可能都有一些思路和方式,但是针对存储方面的设计,在表结构设计之初可能就没考虑过,只有当业务发展到一定规模才意识到它所带来的问题严重性。而物理存储主要是考虑是否要启用表的压缩功…

如何把一张图片分割为网页布局

将一张图片分割为适合网页布局的步骤主要涉及使用图像编辑软件,如Adobe Photoshop,进行切片操作。以下是详细的步骤指导: 1. 准备图片 确保你有一张想要分割的图片,并且已经打开了Adobe Photoshop。 2. 选择切片工具 在工具栏…

环保科普馆如何互动化加深观众环保认知?

如今,多媒体技术的广泛应用,已经为环保、天文、生物等各类主题展厅注入了新的活力,在这些展馆中,它凭借独特的互动体验,以及深入浅出的教育方式,赢得了广大观众的热烈追捧。今天,我们就一同探讨…

阿里巴巴发布最新财报,营收重回增长轨道

KlipC报道:5月14日,阿里巴巴集团发布2024财年及第四财季最新财报,财报显示第四财季收入2218.74亿元,同比增长7%,超出市场预期。2024财年收入同比增长8%,达9411.68亿元。 第四财季净利润244.2亿元人民币&am…

【设计模式】JAVA Design Patterns——Aggregator Microservices(聚合器微服务模式)

🔍目的 用户对聚合器服务进行一次调用,然后聚合器将调用每个相关的微服务。 🔍解释 真实世界例子 网络市场需要有关产品及其当前库存的信息。 它调用聚合服务,聚合服务依次调用产品信息微服务和产品库存微服务,返回组合…

制作coco类型数据集

COCO格式数据集简介 COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以scene understanding(场景理解)为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的segmentation(分…

道路运输驾驶员从业资格报考条件

根据《中华人民共和国道路运输条例》、交通运输部《道路运输从业人员管理规定》和上级交通运输部门的管理要求,参加道路运输从业资格培训时应遵守以下规定: 1、年龄不超过60周岁。 2、驾驶员要取得相应的机动车驾驶证(C4以上)。…

一步步教您轻松搭建YOLO训练环境(视频教程)

一步步教您轻松搭建YOLO训练环境 YOLO(You Only Look Once)是一种流行的实时目标检测算法。为了安装和部署YOLO的训练环境,你需要按照以下步骤进行操作: 一、前期准备 确定硬件要求:YOLO通常在具有GPU的计算机上运行…

不懂技术可以当项目经理吗?看完这篇你就知道了

项目经理作为项目的核心负责人,主要负责项目的规划、组织、协调和控制。 如果你不懂技术,但具备出色的项目管理技能,你仍然可以成功地管理项目。你可以通过与技术团队建立紧密的合作关系,明确项目需求,并依赖技术团队…

远程医疗系统

在远程医疗系统中,为了充分发挥其推动医疗科技创新的作用,系统可以包含以下功能点,并服务于不同类型的用户: 一、系统功能点 远程会诊系统: 实时视频会诊:医生与患者或医生与医生之间的实时视频交流。 病…

IntelliJ IDEA - 查看项目工程代码量统计

首先安装一个统计插件——Statistic 接着在左下角可以看到 Statistic Logo 插件,点击即可看到统计面板

SCSS详解

SCSS(Sassy CSS)是Sass 3引入的新语法,完全兼容CSS3,并且继承了Sass的强大功能。与原始的Sass语法不同,SCSS语法使用了和CSS一样的块语法,即使用大括号“{}”将不同的规则分开,使用分号“;”将具…

正则表达式和sed

一、正则表达式 主要用来匹配字符串(命令结果,文本内容), 通配符匹配文件(而且是已存在的文件) 基本正则表达式 扩展正则表达式 1.元字符 . 匹配任意单个字符,可以是一个汉字 […

在C#中编写递归函数时,为了避免无限递归

在C#中编写递归函数时,为了避免无限递归(也称为栈溢出),你需要确保递归调用有一个明确的终止条件。这个终止条件通常基于一个或多个参数,当这些参数满足某个特定条件时,递归就会停止并返回结果。 以下是一…

第 8 章 机器人底盘Arduino端PID控制(自学二刷笔记)

重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.5 底盘实现_04Arduino端PID控制 上一节最后测试时,电机可能会出现抖动、顿挫的现象&#xff…

Double 4 VR情景教学实训系统在酒店管理课堂上的应用

随着科技的不断发展,虚拟现实技术(VR)已经逐渐渗透到各个领域。在教育领域,VR技术也得到了广泛的应用。 一、酒店管理专业教学场景的模拟 Double 4 VR情景教学实训系统能够模拟真实的工作环境,让学生身临其境地感受酒店…