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

【JavaEE】_HTTP请求首行详情

目录

1. URL

2. 方法

2.1 GET方法

2.2 POST方法

2.3 GET与POST的区别

2.4 低频使用方法


1. URL

在mysql JDBC中已经提到过URL的相关概念:

如需查看有关JDBC更多内容,原文链接如下:

【MySQL】_JDBC编程-CSDN博客

URL用于描述某个资源在网络上的所属位置,数据库也是一种资源故而在JDBC中使用URL描述具体的一个数据库;

而在HTTP请求中的URL详情如下:

注:

1. 特殊字符的urlencode:

对于query string,如果value部分需要包含一些特殊字符,往往需要urlencode操作;

+ ? : / ......等符号在url中已有特殊用途,如果在value中也包含特殊符号,可能会使用浏览器/http服务器,对于url的解析就会出现bug,urlencode本质上就是一种转义字符

比如搜索c++,查看地址栏:

对应ASCII表:

_+的ASCII就是2B(053),加上前面的%表示这是转义的结果;

2. 中文汉字的uelencode:

如使用urlencode工具输入你好:

对应汉字“你”和“好”的ASCII表:

后面使用url时,需要针对query string的内容进行好urlcode工作,如果没有处理好,可能会导致浏览器解析失败,导致请求无法正常进行;

2. 方法

常见的HTTP请求如下:

方法说明
GET获取资源
POST传输实体主体
PUT传输文件
HEAD获得报文首部
DELETE删除文件
OPTIONS询问支持的方法
TRACE追踪路径
CONNECT要求用隧道协议连接代理
LINK建立和资源之间的联系
UNLINE断开连接关系

注:(1)方法描述了这次请求的语义,即要进行的操作

(2)GET方法最常用,其次是POST方法,其余方法使用频率都远小于这两种方法;

2.1 GET方法

触发GET请求的情况:

1. 在浏览器地址栏里直接输入URL或点击收藏夹;

2. HTML中的link标签,script标签,img标签以及a标签等;

3. 通过JS也可以构造GET请求;

2.2 POST方法

触发POST请求的情况:

(1)登录操作:以登录网页版QQ邮箱为例:

(2)上传文件

2.3 GET与POST的区别

其实GET和POST就没有本质区别,在大部分场景下彼此之间都可以彼此替代,但在使用习惯上会有差异:

1.信息存放差异

对于传给服务器的数据,GET请求一般都是把数据放在query string中,POST请求一般是把数据放在body中

2. 语义差异(数据流动方向差异)

GET请求一般用于从服务器获取数据,POST请求一般用于给服务器提交数据

注:① 以上区别只是习惯用法,GET也可以有body,POST也可以有query string,GET也可以给服务器提交数据,POST也可以从服务器获取数据等等;

②  幂等可以理解为相同的输入得到的结果是稳定的,一些资料上也会提及GET请求是幂等的,POST请求不是幂等的。这种说法也并不准确,GET与POST具体是否幂等取决于代码的实现,GET是否幂等也并不绝对,只是RFC标准文档建议GET设置为幂等的,典型的GET不幂等情况比如搜狗的广告搜索,广告的投放顺序与范围背后都有复杂的逻辑;

③ 缓存即保存请求的结果,方便下次请求直接取缓存结果从而节省时间,一些资料也会提及GET请求是可以被浏览器缓存的,POST是不可以被缓存的。这种说法也不准确,是否能够缓存是幂等性的延续,如果请求是幂等,自然就可以缓存;

④  一些资料会提及GET请求可以被浏览器收藏夹收藏,POST则不能,收藏时可能会丢失body。这个说法也不准确,具体取决于浏览器的设计,建议不作为主要的内容进行讨论。

⑤  有关于两种方法的传输数据量的上限、传递数据的安全性、传输数据类型问题的一些说法都是错误的。

2.4 低频使用方法

(1)PUT和POST相似,几乎可以互相替代。PUT只是具有幂等特性,一般用于更新;

(2)DELETE删除服务器指定资源;

(3)OPTIONS返回服务器所支持的请求方法;

(4)HEAD类似于GET,只不过响应体不返回,只返回响应头;

(5)TRACE回显服务器端收到的请求,测试的时候会使用到该方法;

相关文章:

【JavaEE】_HTTP请求首行详情

目录 1. URL 2. 方法 2.1 GET方法 2.2 POST方法 2.3 GET与POST的区别 2.4 低频使用方法 1. URL 在mysql JDBC中已经提到过URL的相关概念: 如需查看有关JDBC更多内容,原文链接如下: 【MySQL】_JDBC编程-CSDN博客 URL用于描述某个资源…...

Linux第48步_编译正点原子的出厂Linux内核源码

编译正点原子的出厂 Linux 内核源码,为后面移植linux做准备。研究对象如下: 1)、linux内核镜像文件“uImage” 路径为“arch/arm/boot”; 2)、设备树文件“stm32mp157d-atk.dtb” 路径为“arch/arm/boot/dts” 3)、默认配置文件“stm32m…...

程序员为什么不喜欢关电脑?

程序员为什么不喜欢关电脑? 本人40 最近待业。,希望 3月前能再就业吧!就不喜欢关电脑 这个问题来说是不好习惯。毕竟你的电脑不是服务器,哈哈。但是程序员都很懒,能自动化的,就让机器干。我在此之前 也工作…...

【初始RabbitMQ】了解和安装RabbitMQ

RabbitMQ的概念 RabbitMQ是一个消息中间件:他可以接受并转发消息。例如你可以把它当做一个快递站点,当你要发送一个包 裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是 …...

Linux第56步_根文件系统第3步_将busybox构建的根文件系统烧录到EMMC

1、第1次将“rootfs”打包 1)、打开第1个终端,准备在“mnt”目录下创建挂载目录“rootfs”; 输入“ls回车” 输入“cd /mnt回车” 输入“ls回车”,查看“mnt”目录下的文件和文件夹 输入“sudo mkdir rootfs回车”,在“mnt”…...

Linux进程间通信(三)-----System V消息队列

消息队列的概念及原理 消息队列实际上就是在系统当中创建了一个队列,队列当中的每个成员都是一个数据块,这些数据块都由类型和信息两部分构成,两个互相通信的进程通过某种方式看到同一个消息队列,这两个进程向对方发数据时&#x…...

Elasticsearch:混合搜索是 GenAI 应用的未来

在这个竞争激烈的人工智能时代,自动化和数据为王。 从庞大的存储库中有效地自动化搜索和检索信息的过程的能力变得至关重要。 随着技术的进步,信息检索方法也在不断进步,从而导致了各种搜索机制的发展。 随着生成式人工智能模型成为吸引力的中…...

态、势、感、知的偏序、全序与无序

在态势感知中,"态"、"势"、"感"和"知"可以被理解为描述不同层次的概念。而在偏序、全序和无序方面,它们可以有不同的关系,简单地说,偏序关系表示部分的可比较性,全序关系表示…...

【从Python基础到深度学习】 8. VIM两种状态

一、安装 sudo apt install vim 二、VIM两种模式 - 命令状态/编辑状态 1.1 进入/退出VIM 进入VIM vim 退出vim :q <enter> 2.2 根目录下添加配置文件 window下创建vimrc类型文件内容如下&#xff1a; set nu set cursorline set hlsearch set tabstop4 使用Wins…...

java微服务面试篇

目录 目录 SpringCloud Spring Cloud 的5大组件 服务注册 Eureka Nacos Eureka和Nacos的对比 负载均衡 负载均衡流程 Ribbon负载均衡策略 自定义负载均衡策略 熔断、降级 服务雪崩 服务降级 服务熔断 服务监控 为什么需要监控 服务监控的组件 skywalking 业务…...

OpenAI 生成视频模型 Sora 论文翻译

系列文章目录 前言 视频生成模型作为世界模拟器 本技术报告的重点是 (1) 将所有类型的视觉数据转换为统一表示&#xff0c;以便对生成模型进行大规模训练的方法&#xff0c;以及 (2) 对索拉的能力和局限性的定性评估。 该报告不包括模型和实现细节。 许多先前的工作使用各种方…...

2.13日学习打卡----初学RocketMQ(四)

2.13日学习打卡 目录&#xff1a; 2.13日学习打卡一.RocketMQ之Java ClassDefaultMQProducer类DefaultMQPushConsumer类Message类MessageExt类 二.RocketMQ 消费幂消费过程幂等消费速度慢的处理方式 三.RocketMQ 集群服务集群特点单master模式多master模式多master多Slave模式-…...

ZigBee学习——BDB

✨本博客参考了善学坊的教程&#xff0c;并总结了在实现过程中遇到的问题。 善学坊官网 文章目录 一、BDB简介二、BDB Commissioning Modes2.1 Network Steering2.2 Network Formation2.3 Finding and Binding&#xff08;F & B&#xff09;2.4 Touchlink 三、BDB Commissi…...

使用Docker快速部署MySQL

部署MySQL 使用Docker安装&#xff0c;仅仅需要一步即可&#xff0c;在命令行输入下面的命令 docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123456 \mysql MySQL安装完毕&#xff01;通过任意客户端工具即可连接到MySQL. 当我们执…...

力扣热题100_滑动窗口_3_无重复字符的最长子串

文章目录 题目链接解题思路解题代码 题目链接 3. 无重复字符的最长子串 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示…...

RM电控工程讲义

HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) 是一个回调函数&#xff0c;通常在STM32的HAL库中用于处理CAN&#xff08;Controller Area Network&#xff09;接收FIFO 0中的消息。当CAN接口在FIFO 0中有待处理的消息时&#xff0c;这个函数会被调用。 HAL库C…...

论文阅读:《Deep Learning-Based Human Pose Estimation: A Survey》——Part 1:2D HPE

目录 人体姿态识别概述 论文框架 HPE分类 人体建模模型 二维单人姿态估计 回归方法 目前发展 优化 基于热图的方法 基于CNN的几个网络 利用身体结构信息提供构建HPE网络 视频序列中的人体姿态估计 2D多人姿态识别 方法 自上而下 自下而上 2D HPE 总结 数据集…...

C语言——oj刷题——杨氏矩阵

目录 1. 理解杨氏矩形的特点 2. 实现杨氏矩形查找算法 3. 编写示例代码 当我们谈到杨氏矩形时&#xff0c;我们指的是一种在二维数组中查找目标元素的高效算法。它是由杨氏&#xff08;Yan Shi&#xff09;教授提出的&#xff0c;因此得名为杨氏矩形。 杨氏矩形问题的场景是…...

C++ 50道面试题

1. static关键字 1.全局static变量 存储位置&#xff1a;静态存储区&#xff0c;在程序运行期间一直存在 初始化&#xff1a; 未手动初始化的变量自动初始化为0 作用域&#xff1a; 从定义之处开始&#xff0c;到文件结束&#xff0c;仅能在本文件中使用 2.局部static变量…...

寒假学习记录14:JS字符串

目录 查找字符串中的特定元素 String.indexOf() &#xff08;返回索引值&#xff09; 截取字符串的一部分 .substring() &#xff08;不影响原数组&#xff09;&#xff08;不允许负值&#xff09; 截取字符串的一部分 .slice() &#xff08;不影响原数…...

Mirage Flow 硬件开发入门:Keil5 MDK安装与嵌入式AI项目创建

Mirage Flow 硬件开发入门&#xff1a;Keil5 MDK安装与嵌入式AI项目创建 如果你对把AI模型塞进一个小小的单片机里感到好奇&#xff0c;想亲手试试让硬件“聪明”起来&#xff0c;那么你来对地方了。很多朋友在第一步——搭建开发环境上就卡住了&#xff0c;面对一堆安装包和配…...

lite-avatar形象库使用手册:浏览、选择、集成三步搞定

lite-avatar形象库使用手册&#xff1a;浏览、选择、集成三步搞定 在数字人应用开发中&#xff0c;选择合适的虚拟形象往往是项目启动的第一个挑战。传统方式需要从零开始建模、训练&#xff0c;不仅耗时耗力&#xff0c;结果也难以保证。lite-avatar形象库的出现&#xff0c;…...

VSCode安装与应用

vscode官网&#xff1a;https://code.visualstudio.com/Download 点击下一步 注意&#xff1a;这里将创建桌面快捷和下面的1、2勾选&#xff0c;3取消掉&#xff08;以便后续VSCode能右键快捷打开相关文件&#xff0c;3若不取消会将改变文件默认图标为VSCode&#xff0c;并且打…...

ollama-QwQ-32B提示工程:提升OpenClaw操作准确率的10个模板

ollama-QwQ-32B提示工程&#xff1a;提升OpenClaw操作准确率的10个模板 1. 为什么需要专门优化OpenClaw的提示词&#xff1f; 第一次用OpenClaw执行文件整理任务时&#xff0c;我遭遇了灾难性结果——AI误将整个Downloads文件夹按修改日期排序后&#xff0c;把300多个文件全部…...

硬件编译器工具链新手指南:从概念到实践

硬件编译器工具链新手指南&#xff1a;从概念到实践 【免费下载链接】circt Circuit IR Compilers and Tools 项目地址: https://gitcode.com/gh_mirrors/ci/circt 一、CIRCT核心价值解析 在硬件设计领域&#xff0c;你是否曾面临这些挑战&#xff1a;高级算法难以直接…...

MS5803-14BA I²C驱动开发:嵌入式压力传感器实战指南

1. MS5803-14BA压力传感器库深度解析&#xff1a;面向嵌入式工程师的IC驱动开发实践1.1 传感器核心特性与工程定位MS5803-14BA是TE Connectivity&#xff08;原Measurement Specialties&#xff09;推出的高精度数字压力/温度复合传感器&#xff0c;采用MEMS压阻式传感原理与Δ…...

ESP32+LVGL实战:手把手教你搞定ST7789屏幕镜像显示(附完整代码)

ESP32LVGL实战&#xff1a;从寄存器到工程化配置&#xff0c;彻底解决ST7789屏幕镜像显示问题 当你用ESP32驱动ST7789屏幕时&#xff0c;是否遇到过图像上下左右颠倒的困扰&#xff1f;这个问题看似简单&#xff0c;但网上的零散教程往往只告诉你改某个寄存器值&#xff0c;却忽…...

LM339比较器实战:手把手教你搭建电池电压监测电路(附电路图)

LM339比较器实战&#xff1a;手把手教你搭建电池电压监测电路&#xff08;附电路图&#xff09; 1. 为什么选择LM339作为电池监测核心器件&#xff1f; 在电子设计领域&#xff0c;电压监测是保障设备稳定运行的基础功能之一。LM339作为一款经典的四路电压比较器&#xff0c;…...

AudioSeal小白入门:无需代码,用90年代复古界面快速加密你的音频

AudioSeal小白入门&#xff1a;无需代码&#xff0c;用90年代复古界面快速加密你的音频 1. 什么是AudioSeal&#xff1f; AudioSeal是Meta公司开发的一款前沿音频水印技术&#xff0c;它能在不影响音质的前提下&#xff0c;将数字签名"隐形"嵌入到音频文件中。想象…...

保姆级教程:在Linux服务器上为PCIe NVMe SSD配置DPC,实现安全暴力热插拔

Linux服务器NVMe SSD暴力热插拔实战&#xff1a;DPC配置与生产环境验证 在数据中心运维领域&#xff0c;NVMe SSD因其高性能已成为存储标配&#xff0c;但传统热插拔流程需要预先卸载驱动、停止IO&#xff0c;这在7x24小时运行的生产环境中往往难以实施。本文将手把手带您完成P…...