【JavaEE】_HTTP请求首行

news/2024/7/24 9:30:54 标签: http, 网络协议, 网络

目录

1. URL

2. 方法

2.1 GET方法

2.2 POST方法

2.3 GET与POST的区别

2.4 低频使用方法


1. URL

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

https://img-blog.csdnimg.cn/direct/4c60a444cbff43149f9d679b29167859.png" width="651" />

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

【MySQL】_JDBC编程-CSDN博客

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

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

https://img-blog.csdnimg.cn/direct/278e62b0641342b8a2dec4e3fdb7e3aa.png" width="643" />

注:

1. 特殊字符的urlencode:

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

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

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

https://img-blog.csdnimg.cn/direct/3e45cc7ff6d347a7b5b1122c38220c2a.png" width="473" />

对应ASCII表:

https://img-blog.csdnimg.cn/direct/65431af0566f4b4d98641b0b0ae0fe1d.png" width="531" />

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

2. 中文汉字的uelencode:

如使用urlencode工具输入你好:

https://img-blog.csdnimg.cn/direct/a5cd3c67499548c6b825a84fa0c94d50.png" width="368" />

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

https://img-blog.csdnimg.cn/direct/c70623da34874d8d8b4664b004b51953.png" width="536" />

后面使用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或点击收藏夹;

https://img-blog.csdnimg.cn/direct/9f4fef5b6e6d4ccd9d1f448d14ca8ac2.png" width="541" />

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

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

2.2 POST方法

触发POST请求的情况:

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

https://img-blog.csdnimg.cn/direct/5c87a3ed280c479b801d75f9e6c79194.png" width="525" />

(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回显服务器端收到的请求,测试的时候会使用到该方法;


http://www.niftyadmin.cn/n/5380690.html

相关文章

数据结构与算法:二叉树

一、二叉树的链式存储 树结点数据结构 typedef char BiElemType; typedef struct BiTNode{BiElemType c;struct BiTNode *lchild;struct BiTNode *rchild; }BiTNode,*BiTree;树中任何一个结点都是一个结构体,它的空间是通过malloc申请出来的 二、二叉树层次建树 …

分享一个学英语的网站

名字叫:公益大米网​​​​​​​ Freerice 这个网站是以做题的形式来记忆单词,题干是一个单词,给出4个选项,需要选出其中最接近题干单词的选项。 答对可以获得10粒大米,网站的创办者负责捐赠。如图 触发某些条件&a…

【Qt】图形视图框架 之 坐标

QGraphicsView移动图元/场景以及坐标转换 QGraphicsView图形视图框架使用(一)坐标变换 1.继承 QGraphicsProxyWidget 类 虚函数 mousePressEvent、mouseReleaseEvent 的参数 QGraphicsSceneMouseEvent event->pos() 是item坐标系*下的坐标,不是scene场景坐标系下…

模型可视化

模型标题可视化 可视化工具:Graphiz、Netron、ZetaneEngine 7.2.2Graphiz可视化工具 Graphiz是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形,使用它可以非常方便地对任何图形进行可视化。 Graphiz的使用步骤包括创…

【MySQL】学习多表查询和笛卡尔积

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-N8PeTKG6uLu4bJuM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

三种vcruntime140.dll丢失解决方法,有效解决vcruntime140.dll文件丢失

vcruntime140.dll作为一个动态链接库文件,具有重要的功能和用途。它是由Microsoft Visual C Redistributable软件包提供的一个重要组件,用于支持运行在Windows操作系统上的应当vcruntime140.dll文件丢失时,将会对计算机系统产生一系列的影响。…

Mysql5.6忘记密码,如何找回(windows)

mysql5.6安装 第一步:关闭正在运行的数据库服务 net stop mysql第二步:在my.ini文件当中的[mysqld] 任意一个位置放入 skip-grant-tables第三步:启动mysql服务 net start mysql第四步:服务启动成功后就可以登录了,…

IT行业高含金量证书全解析:开启职业生涯新篇章

在快速发展的IT行业,持续学习和专业认证是提升个人竞争力的重要途径。全球范围内存在着众多的IT认证,它们不仅能够验证你的技术能力,还能在求职和职业晋升中起到关键作用。 本篇博客将深入探讨IT行业中部分高含金量的证书,包括中…