谈谈 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.地址…

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

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

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

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

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

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

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

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(分…

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

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

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

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

正则表达式和sed

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

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

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

ubuntu下安装pwndbg

安装pwndbg 如果可以科学上网 首先安装git apt install git 然后拉取git库 git clone GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy 进入到pwngdb的文件夹中 cd pwngdb 执行 ./setup.sh 而后输入gdb 出现红色pwndgb就是安装成功…

解决springboot+vue静态资源刷新后无法访问的问题

一、背景 原项目是有前后端分离设计,测试环境是centos系统,采用nginx代理和转发,项目正常运行。 项目近期上线到正式环境,结果更换了系统环境,需要放到一台windows系统中,前后端打成一个jar包,…

Python重复文件清理小工具

针对电脑长期使用产生的重复文件,尤其是微信电脑版每转发一次生成一个重复文件的问题,用python写了一个批量清理重复文件的小工具,记录备用。 import shutil import tkinter from tkinter import filedialog import os import threading imp…

美港通正规股票交易市场人民币突然拉升,市场开启“大风车”模式?

查查配今天上午,市场又开启了“大风车”模式,多个热点轮番拉升。 一则关于地产行业利好的小作文流出,地产产业链上午爆发,租售同权、房地产服务、房地产开发等板块大涨,光大嘉宝、天地源等个股涨停。万科A涨超4%。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少…

如何在Sui智能合约中验证是否为多签地址

通过多签合约实现多个用户可访问的安全账户。多签(multi-sig)钱包和账户通过允许多个用户在预定义条件下访问共享资产,或让单个用户实施额外的安全措施,从而增强密钥管理。例如,多签钱包可以用于管理去中心化自治组织&…

智慧教育平台:选课系统的Spring Boot实现

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

Verilog基础语法——条件语句if-else与case

Verilog基础语法——条件语句case、if-else 写在前面一、if-else语句二、case语句2.1 case语句2.2 casez语句2.3 casex语句 写在后面 写在前面 在Verilog语法中,常用的条件语句有if-else语句和case语句,用于判断条件是否为真,并执行判断条件后…

第 N 个泰波那契数

题目链接 第 N 个泰波那契数 题目描述 注意点 0 < n < 37答案保证是一个 32 位整数 解答思路 动态规划根据前三个数字推出新的泰波那契数 代码 class Solution {public int tribonacci(int n) {if (n 0) {return 0;}if (n 1 || n 2) {return 1;}int x 0;int x…

JSON格式化输出html——数组+对象+JSON字符串+汉字——基础积累——@pgrabovets/json-view

昨天写了一篇关于JSON格式化输出到页面上——数组对象JSON字符串汉字——基础积累的文章&#xff0c;效果是可以实现的 但是如果要实现右侧部分的展开/折叠&#xff0c;则可以使用到下面的插件了pgrabovets/json-view github链接&#xff1a;https://github.com/pgrabovets/j…