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

HTTP/1.1协议中的八种请求

2023年8月29日,周二晚上


目录

  • 概述八种请求
  • GET请求
  • POST请求
  • PUT请求
  • PATCH请求
  • DELETE请求
  • HEAD请求
  • OPTIONS请求
  • TRACE请求

概述八种请求

 HTTP/1.1协议中定义了8种常用的请求方法,分别是:
1. GET

  • 用途:请求指定的页面信息,并返回实体主体。
  • 例子:获取一个网页、图片等静态内容。

2. POST 

  • 用途:向指定资源提交数据进行处理(例如提交表单或上传文件)。
  • 例子:新增数据、发送评论。

3. PUT

  • 用途:向指定资源位置上传其最新内容。
  • 例子:更新已有资源。

4. PATCH 

  • 用途:更新资源的部分内容。
  • 例子:修改用户个人资料中的一部分字段。

5. DELETE

  • 用途:删除指定资源。
  • 例子:删除文章或评论。 

6. HEAD

  • 用途:获取报头中的元数据,但不返回实体内容。
  • 例子:查看资源是否存在。

7. OPTIONS 

  • 用途:获取信息,关于资源的哪些属性是客户端可以使用的。
  • 例子:检查后端API的功能。

8. TRACE

  • 用途:回显收到的请求,主要用于测试或诊断目的。
  • 例子:测试请求是否到达服务端。

这八种方法覆盖了大多数的CRUD(创建、读取、更新、删除)操作,在Web服务开发中广泛应用。

正确使用请求方法能提高效率和语义性。

GET请求

GET请求主要用于获取资源,其特征和用途如下:

  • 获取指定资源,如文件、记录等,不会修改资源。
  • 参数通过URL传递,长度限制一般在2KB。
  • 请求体为空,所有信息都在URL中。
  • 浏览器默认使用GET请求链接资源。

典型应用场景:

  • 获取网页或JSON数据接口信息。
  • 查询数据库记录或文件内容。
  • 下载静态资源如图片、视频等。
  • 搜索引擎抓取网页时使用GET。
  • 实现幂等操作,多次GET不会改变资源状态。

与POST不同点:

  • GET只获取资源,POST可创建/修改资源
  • GET参数在URL中,POST在请求体中
  • GET适合小数据量,POST无限制
  • GET请求结果可以缓存,POST不可以

所以总结来说,GET用于安全地获取资源,不会修改资源状态,它应用于数据量小且不涉及敏感信息的查询场景。

POST请求

 POST请求主要用于向服务器提交数据,以创建或修改资源,具有以下主要特征和用途:

  • 用于服务器端资源创建/修改,如发布文章、添加用户等会修改资源状态的操作。
  • 可以在请求体中发送结构化的数据,没有数据长度限制。
  • POST参数放在请求体中,不会暴露在URL上,较安全不适用于敏感数据GET。 
  • 可以向后端API传递复杂请求体,实现更丰富的功能,如远程调用。
  • 通常用于表单提交场景,如登录、注册、评论等。
  • POST请求结果一般不会被缓存。

POST请求的典型应用场景包括:

  • 登录系统提交用户名密码。
  • 注册用户信息到用户数据库。
  • 发布新文章/评论内容到网站。
  • 上传文件或图片到服务器。
  • 提交表单数据。
  • 调用远程API,向后端传递JSON请求体。
  • AJAX请求提交数据到后端不刷新页面。
  • 浏览器向后端提交搜索查询词。
  • 进行在线支付提交订单或付款信息。
  • 发起HTTP请求调用后端服务或功能。

与GET不同点:

  • GET只获取资源,POST可创建或修改资源
  • GET参数在URL中,POST在请求体中  
  • GET适合小数据量,POST无长度限制
  • GET结果可以缓存,POST不可以

所以总结来说,POST用于向服务器端提交数据以创建或修改资源,尤其适用于表单提交、文件上传等需要传输大数据的场景。

PUT请求

 PUT请求主要用于资源的完整替换,即完全更新一个资源。它的主要特征和用途如下:

  • 用来替换资源,完全更新资源的内容。
  • 如果请求的资源不存在,则创建该资源。
  • PUT请求必须提供请求体,指定更新的完整资源内容。
  • 通常情况下PUT是幂等操作,多次执行同样效果只是替换一次。

一些具体应用场景:

  • 更新用户个人资料中的所有字段。
  • 更新文章或评论的完整内容。 
  • 替换一个文件或图片的完整内容。
  • 更新资源的完整结构,如数据库表结构。

与PATCH相比:

  • PATCH用于局部更新资源的部分字段。
  • PUT用于完整替换资源的所有字段。

所以总体来说,PUT用于替换资源的完整内容,完全更新一个资源,而不是局部修改。它适用于需要完全覆盖原内容的场景。

PATCH请求

PATCH请求主要用于部分更新资源,即只更新资源的部分字段,而不是完整替换整个资源内容。

它的主要特征和用途:

  • 用于更新资源的部分属性,而不是完全替换资源。
  • PATCH请求必须在请求体中指明待更新的字段和新值。
  • 如果请求的资源不存在,则会报错而不是自动创建。
  • 通常情况下PATCH也是幂等操作。

一些具体应用场景:

  • 更新用户资料中的个别字段,如昵称、头像等。
  • 更新文章的标题或内容摘要而不是完整内容。
  • 更新商品的库存数量或价格而不是整个商品详情。 
  • 修改数据库表中的某些字段值。

与PUT的区别:

  • PUT用于完整替换资源内容
  • PATCH只更新资源的部分字段值

所以总体来说,PATCH用于更新资源的部分属性值,而不是完全替换整个资源,它可以更精细地控制更新的范围。

DELETE请求

 DELETE请求主要用于删除资源,其主要特征和用途如下:

  • 用于删除指定的资源,将其从服务器中完全移除。
  • DELETE请求没有请求体,所有信息都在请求URL中。
  • 如果资源不存在,服务器也会返回204状态码而不是404。
  • DELETE通常是幂等操作,多次删除同一个资源只会产生一次删除操作。

一些典型应用场景:

  • 删除文章、评论或其他内容资源。
  • 从购物车或收藏夹中移除商品。
  • 解除关注用户或删除好友关系。
  • 从数据库或存储系统中删除记录。
  • 删除文件或其他存储资源。

与PUT/PATCH不同的是:

  • PUT/PATCH更新资源内容
  • DELETE完全删除资源

所以总体来说,DELETE请求用于完全删除服务器上的某个资源,将其从存储系统中移除,而不是仅更新资源内容。它适用于需要彻底删除资源的场景。

HEAD请求

HEAD请求用于获取资源的元数据,而不是资源本身的内容。

它的主要特征和用适:

  • HEAD请求和GET请求一样,但不返回响应体内容,只返回响应报头。
  • 可以用来获取文件或页面的元数据,如大小、类型、最后修改时间等。
  • 由于没有传输正文内容,HEAD请求比GET请求更快和高效。

一些典型应用场景:

  • 检查文件是否存在,获取其属性信息但不下载文件。
  • 验证链接是否可用,获取页面信息但不传输整个页面。
  • 测试服务器性能,模拟GET但不传输内容体检测响应速度。
  • 网站分析,统计页面访问但不占用带宽下载正文。

与GET的区别:

  • GET返回完整响应包括报头和正文
  • HEAD只返回报头,不返回正文内容

所以总体来说,HEAD请求用于快速和高效地获取资源的元数据信息,而不需要传输整个内容体,它可以看作是只返回头部的GET请求。

OPTIONS请求

OPTIONS请求用于获取与资源相关的通信选项,并且获取该资源支持的HTTP请求方法。

主要特征和用途:

  • 不会对资源本身进行操作,仅用于获取资源相关信息。
  • 服务器会返回允许的请求方法类型,如GET、POST等。
  • 还会返回其他元信息,如请求头、实体主体等资源可以处理的信息。

典型应用场景:

  • 跨域请求前,了解服务器是否支持跨域请求。
  • 客户端检测Web服务是否支持某种操作,以便进行后续请求。
  • 测试链接是否可以访问,获取允许的操作类型。
  • 了解API接口支持的请求方式,比如只允许GET不允许POST。

与其他方法不同:

  • OPTIONS不对资源本身进行操作。
  • 它主要用于获取资源相关元信息,而非实际操作资源。

所以总体来说,OPTIONS请求用于获取资源的相关元信息,比如支持的请求方式,而不对资源本身进行任何实质性操作。

TRACE请求

TRACE请求是用于检测或诊断通信路径以及检测中间网关或服务器。

它的主要特征和用途:

  • 服务器将原样返回请求报文,包括请求头和请求体内容。
  • 可以用于测试请求是否正确传输,是否有被修改或过滤。
  • 可用于诊断客户端和服务器之间的通信链路问题。
  • 还可以获取服务器软件版本和其他系统信息。

一些典型应用场景:

  • 网络诊断,测试请求是否被中间设备修改或过滤。
  • 跟踪请求在各个节点的处理过程,调试通信问题。
  • 检测服务器软件和操作系统版本是否被修改。
  • 测试防火墙和代理是否允许TRACE请求通过。

与其他方法不同:

  • TRACE不对资源本身产生影响,只是原样返回请求。
  • 它主要用于诊断和测试通信质量,而非实际操作资源。

所以总体来说,TRACE请求用于测试和诊断客户端与服务器之间的通信质量,可以追踪请求在各个节点的处理过程。

相关文章:

HTTP/1.1协议中的八种请求

2023年8月29日,周二晚上 目录 概述八种请求GET请求POST请求PUT请求PATCH请求DELETE请求HEAD请求OPTIONS请求TRACE请求 概述八种请求 HTTP/1.1协议中定义了8种常用的请求方法,分别是:1. GET 用途:请求指定的页面信息,并返回实体主体。例子:获取一个网页、图片等静态…...

面试系列 - JVM内存模型和调优详解

目录 一、JVM内存模型 1. 程序计数器(Program Counter Register): 2.Java虚拟机栈(Java Virtual Machine Stacks): 3. 本地方法栈(Native Method Stack): 5. 方法区…...

JavaScript -【第一周】

文章来源于网上收集和自己原创,若侵害到您的权利,请您及时联系并删除~~~ JavaScript 介绍 变量、常量、数据类型、运算符等基础概念 能够实现数据类型的转换,结合四则运算体会如何编程。 体会现实世界中的事物与计算机的关系理解什么是数据并…...

高性能缓存 Caffeine 原理及实战

Caffeine 是基于Java 8 开发的、提供了近乎最佳命中率的高性能本地缓存组件,Spring5 开始不再支持 Guava Cache,改为使用 Caffeine。 1 算法原理 对于 Java 进程内缓存我们可以通过 HashMap 来实现。不过,Java 进程内存是有限的,…...

【算法】leetcode 105 从前序与中序遍历序列构造二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder [3,9,20,15,7], inorder [9,3,15,20,7] Output: [3,9,20,null,null,15,7]示例 2: Input: pr…...

11 | Spark计算数据文件中每行数值的平均值

需求:计算数据文件中的数值的平均值 背景: 你有一个数据文件,其中包含一系列数值,每行一个数值,数值之间用逗号分隔。你想使用Apache Spark分布式计算框架来读取数据文件中的数值并计算它们的平均值。功能要求: 通过Spark配置和上下文初始化Spark应用程序。从数据文件中…...

AI与游戏创新:深度学习的起跑枪声

《AI与游戏创新:深度学习的起跑枪声》 目录 引言AIGC定义与重要性AI在游戏中的应用AI推动游戏创新的可能途径AIGC的挑战与解决方案结论:AI是游戏行业的下一站 引言 AI(人工智能)正在全球范围内改变各个行业,游戏行…...

【GUI开发】用python爬YouTube博主信息,并开发成exe软件

文章目录 一、背景介绍二、代码讲解2.1 爬虫2.2 tkinter界面2.3 存日志 三、软件演示视频四、说明 一、背景介绍 你好,我是马哥python说,一名10年程序猿。 最近我用python开发了一个GUI桌面软件,目的是爬取相关YouTube博主的各种信息&#…...

7.6 函数的递归调用

直接调用&#xff1a; ### 1. 直接递归调用 直接递归调用是指一个函数直接调用自己。例如&#xff0c;计算阶乘的函数&#xff0c;可以使用递归方法&#xff1a; int factorial(int n) {if (n < 1) {return 1;}return n * factorial(n - 1); } 在这个例子中&#xff0c;f…...

本地开机启动jar

1&#xff1a;首先有个可运行的jar包 本地以ruiyi代码为例打包 2&#xff1a;编写bat命令---命名为.bat即可 echo off java -jar D:\everyDay\test\RuoYi\target\RuoYi.jar 3&#xff1a;设置为开机自启动启动 快捷键winr----输入shell:startup---打开启动文档夹 把bat文件复…...

解决uniapp手机真机调试时找不到手机问题

1、检查 USB 调试是否开启 2、检查是否有选择 文件 传输 选项 3、如果上述都做了还找不到&#xff0c;可以看看开发者选项中的【USB设置】&#xff0c;把模式改为 MIDI 模式...

HarmonyOS应用开发者-----高级认证试题及答案

HarmonyOS应用开发者高级认证试题及答案 试题会不定时刷新,本试题仅供大家学习参考 【判断题】 2/2 HarmonyOS应用可以兼容OpenHarmony生态 正确(True)【判断题】 2/2 所有使用@Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。 正确(True…...

R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列...

全文链接&#xff1a;http://tecdat.cn/?p31162 最近我们被客户要求撰写关于SV模型的研究报告&#xff0c;包括一些图形和统计输出&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 本文做SV模型&#xff0c;选取马尔可夫蒙特卡罗法(MCMC)、正则化广…...

详细教程:Stegsolve的下载,jdk的下载、安装以及环境的配置

最近在学习隐写术&#xff0c;下载stegsolve 以及使用stegsolve倒腾了很久&#xff0c;避免朋友们和我一样倒腾了很久&#xff0c;希望此文可以帮到刚在学习隐写的朋友们(win7下使用stegsolve) 文章目录 一、下载stegsolve链接二、jdk的下载三、jdk的安装四、配置环境变量五、检…...

Watermark 是怎么生成和传递的?

分析&回答 Watermark 介绍 Watermark 本质是时间戳&#xff0c;与业务数据一样无差别地传递下去&#xff0c;目的是衡量事件时间的进度&#xff08;通知 Flink 触发事件时间相关的操作&#xff0c;例如窗口&#xff09;。 Watermark 是一个时间戳, 它表示小于该时间戳的…...

深度学习论文分享(八)Learning Event-Driven Video Deblurring and Interpolation

深度学习论文分享&#xff08;八&#xff09;Learning Event-Driven Video Deblurring and Interpolation 前言Abstract1 Introduction2 Motivation2.1 Physical Model of Event-based Video Reconstruction2.2 Spatially Variant Triggering Threshold 3 Proposed Methods3.1 …...

UI设计开发原则

一、一致性原则 坚持以用户体验为中心设计原则&#xff0c;界面直观、简洁&#xff0c;操作方便快捷&#xff0c;用户接触软件后对界面上对应的功能一目了然、不需要太多培训就可以方便使用本应用系统。 1、字体 保持字体及颜色一致&#xff0c;避免一套主题出现多个字体&am…...

Mac 如何判断下载Mac with Intel Chip 还是 Mac with Apple Chip

如下图&#xff0c;当我们在 Mac系统 下载客户端时&#xff0c;有两种选择&#xff1a;Mac with Intel Chip 、 Mac with Apple Chip 如何判断要下载哪一种&#xff1f; 需要判断本机Mac是在Inter芯片还是Apple芯片上运行的。方法如下&#xff1a; 点击屏幕左上角Apple标志&a…...

windows笔记本远程连接如何打开任务管理器?

参考素材&#xff1a; https://jingyan.baidu.com/article/8275fc86a97f5207a03cf6cd.html https://www.anyviewer.cn/how-to/ctrl-alt-delete-remote-desktop-6540.html 网上查了很多方法&#xff0c;都说ctrlaltend可以解决这个问题。 但是笔记本键盘上没有end键。 继续查了一…...

GitHub打不开解决方法——授人以渔

打不开GitHub的原因之一&#xff0c;DNS地址解析到了无法访问的ip。&#xff08;为什么无法访问&#xff1f;&#xff09; 1、打开GitHub看是哪个域名无法访问&#xff0c;F12一下 2、DNS解析看对应的域名目前哪个IP可以访问 DNS解析的网址&#xff1a; &#xff08;1&#x…...

gRPC之数据压缩Snappy、zstd

文章目录 gRPC之数据压缩Snappy一、背景二、什么是snappy1. Snappy适合场景 三、demo: Go代码实现了一个snappy压缩格式的压缩器for grpc1. 这段代码怎么保证并发安全的&#xff1f; 四、什么是zstd五、 zstd和snappy有什么区别,如何选择?六、demo: Go代码实现了一个zstd压缩格…...

k8s之存储篇---存储类StorageClass

介绍 StorageClass 为管理员提供了描述存储"类"的方法。 不同的类型可能会映射到不同的服务质量等级或备份策略&#xff0c;或是由集群管理员制定的任意策略。 Kubernetes 本身并不清楚各种类代表的什么。这个类的概念在其他存储系统中有时被称为"配置文件&quo…...

WordPress(4)关于网站的背景图片更换

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、更改的位置1. 红色区域是要更换的随机的图片二、替换图片位置三.开启随机数量四.结束前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也…...

2 | Window 搭建单机 Hadoop 和Spark

搭建单机 Hadoop 和 Spark 环境可以学习和测试大数据处理的基础知识。在 Windows 操作系统上搭建这两个工具需要一些配置和设置,下面是一个详细的教程: 注意: 在开始之前,请确保你已经安装了 Java 开发工具包(JDK),并且已经下载了 Hadoop 和 Spark 的最新版本。你可以从…...

接口测试与功能测试的区别~

今天为大家分享的是我们在日常测试工作中, 一定会接触并且目前在企业中是主要测试内容的 功能测试与接口测试 一.功能测试与接口测试的基本概念。 1.1 什么是功能测试呢? 功能测试: 是黑盒测试的一方面, 检查实际软件的功能是否符合用户的需求 功能测试测试的内容包括以下…...

LeetCode 23 合并 K 个升序链表

LeetCode 23 合并 K 个升序链表 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/merge-k-sorted-lists/description/ 博主Github&#xff1a;https://github.com/GDUT-Rp/LeetCode 题目&#xff1a; 给你一个链表数组…...

[国产MCU]-W801开发实例-TCP客户端

TCP客户端 文章目录 TCP客户端1、TCP协议简单介绍2、W801创建TCP客户流程本文将详细介绍如何在W801中使用TCP客户端。 1、TCP协议简单介绍 传输控制协议 (TCP) 是一种标准,它定义了如何建立和维护应用程序可以用来交换数据的网络对话。 TCP 与 Internet 协议 (IP) 一起工作,…...

《爵士乐史》乔德.泰亚 笔记

第一章 【美国音乐的非洲化】 【乡村布鲁斯和经典布鲁斯】 布鲁斯&#xff1a;不止包括忧愁、哀痛 十二小节布鲁斯特征&#xff1a; 1.乐型&#xff08;A:主、B:属、C/D:下属&#xff09;&#xff1a;A→A→B→A→C→D→A→A 2.旋律&#xff1a;大三、小三、降七、降五 盲人…...

工程制造领域:企业IT架构

一、IT组织规划架构图 1.1 IT服务保证梯队与指导思想 二、整体业务规划架构图 三、数据化项目规划架构图 四、应用系统集成架构图...

PY32F003F18点灯

延时函数学习完之后&#xff0c;可以学习PY32F003F18的GPIO输出功能。 1、Debug引脚默认被置于复用功能上拉或下拉模式&#xff1a;PA14默认为SWCLK: 置于下拉模式PA13默认为SWDIO: 置于上拉模式PF4默认为Boot&#xff1a;Boot引脚默认置于输入下拉模式 2、GPIO输出状态&#…...

东莞seo优化排名/seo的工作内容主要包括

Kubernetes最近爆出特权升级漏洞&#xff0c;这是Kubernetes的首个重大安全漏洞。为了修补这个严重的漏洞&#xff0c;Kubernetes近日推出了几个新版本。 谷歌高级工程师Jordan Liggitt在周一发布的Kubernetes安全公告中称&#xff0c;Kubernetes v1.10.11、v1.11.5&#xff0c…...

睢宁县凌城做网站的/百度站长工具抓取诊断

推荐使用null ! XXX 和 “bar”.equals(foo) 推荐使用null ! XXX 和 “bar”.equals(foo) 推荐使用null ! XXX 和 “bar”.equals(foo) 推荐使用null ! XXX 和 “bar”.equals(foo) 推荐使用null ! XXX 和 “bar”.equals(foo) 推荐使用null ! XXX 和 “bar”.equals(foo) 推荐…...

wordpress ftp 权限/电子商务软文写作

我们知道私有IP地址是不能在公网上进行路由的&#xff0c;现在用户需求是位于总公司的某一个VLAN想要和分部的某一个vlan进行直接的通信。 那么此时我们就通过 site-to-site ***来解决这个问题 配置 IPsec site-to-site *** 的几个重要步骤&#xff0c;我们以后的实验过程就按照…...

江西萍乡做网站公司/青海百度关键词seo

1、Linux安裝jdk 1、如果電腦沒有wget命令的&#xff0c;先使用yum安裝wget命令。 eg: yum install wget 2、安裝好后就可以直接使用wget命令去下載jdk。 附&#xff1a;打開官網連接&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213…...

网站logo优化/小程序推广50个方法

JLabel的使用&#xff1a; 类层次结构图&#xff1a; java.lang.Object--java.awt.Component--java.awt.Container--javax.swing.JComponent--javax.swing.JLabel 在以前的许多范例&#xff0c;我们已经使用过JLabel这个组件&#xff0c;相信大家对此组件应该不会感到陌生…...

贵港市建设局网站/推广之家

一&#xff0e; RMAN 备份的一些优点和OS命令备份方式相比&#xff0c;使用RMAN的优点1 备份执行期间不需要人工干预&#xff0c;因此减少了误操作的机会&#xff1b;2 可以有效的将备份和恢复结合起来&#xff1b;3 支持除逻辑备份以外的所有备份类型&#xff0c;包括完全备…...