百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

HTTP的概念、原理、工作机制、数据格式和REST

csdh11 2025-03-17 17:01 1 浏览

HTTP的定义

Hypertext Transfer Protocol,超文本传输协议,和HTML(Hypertext MarkupLanguage 超文本标记语言)一起诞生的,用于在网络上请求和传输HTML内容。

超文本,也就是扩展文本,指的是HTML中可以有链向别的文本的链接(hyperlink)。

HTTP的工作方式

浏览器:

用户输入地址回车或点击链接->浏览器拼装HTTP报文并发送请求给服务器->服务器处理请求后发送响应报文给浏览器->浏览器解析响应报文并使用渲染引擎显示到界面

手机App:

用户点击或界面自动触发联网需求->Android代码调用拼装HTTP报文并发送请求到服务器->服务器处理请求后发送响应报文给手机->Android代码处理响应报文并作出相应处理(如储存数据、加工数据、显示数据到界面)

URL和HTTP报文

URL格式

三部分:协议类型、服务器地址(和端口号)、路径(Path)

协议类型://服务器地址[:端口号]路径

例如:http://toutiao.com/users?gender=male

报文格式

请求报文

响应报文

Request Method 请求方法

GET

  • 用于获取资源
  • 对服务器数据不进行修改
  • 不发送Body

对应Android Retrofit的代码

POST

  • 用于增加或修改资源
  • 发送给服务器的内容写在Body里面

对应Retrofit的代码:

PUT

  • 用户修改资源
  • 发送给服务器的内容写在Body

对应Retrofit的代码:

DELETE

  • 用户删除资源
  • 不发送Body

HEAD

  • 和GET使用方法完全相同
  • 和GET唯一区别在于,返回的响应中没有Body

Status Code状态码

三位数字,用户对响应结果做出类型化描述(如获取成功,内容未找到)。

  • 1xx:临时性消息。如:100(继续发送)、101(正在切换协议)
  • 2xx:成功。最典型的是 200(OK)、201(创建成功)。
  • 3xx:重定向。如 301(永久移动)、302(暂时移动)、304(内容未改变)。
  • 4xx:客户端错误。如400(客户端请求错误)、401(认证失败)、403(被禁止)、404(找不到内容)。
  • 5xx:服务器错误。如 500(服务器内部错误)。

Header 首部

作用:HTTP消息的metadata。

Host

目标主机。注意:不是在网络上用于寻址的,而是在目标服务器上用于定位子服务器的。

Content-Type

指定Body的类型,主要有四类:

  1. text/html

请求Web页面是返回响应的类型,Body中返回html文本。格式如下:


  1. x-www-form-urlencoded

Web页面纯文本表单的提交方式。

格式如下:

对应Retrofit的代码

  1. multipart/form-data

Web页面含有二进制文件时的提交方式。

格式如下:

对应Retrofit的代码:

  1. application/json,image/jpeg,application/zip...

单项内容(文本或非文本都可以),用于Web Api的响应或者POST/PUT的请求

请求中提交JSON

对应Retrofit的代码

响应中返回JSON


请求中提交二进制内容

对应Retrofit的代码

相应中返回二进制内容

Content-Length

指定Body的长度(字节)。

Transfer:chunked(分块传输编码Chunked Transfer Encoding)

用于当响应发起时,内容长度还没能确定的情况下。和Content-Length不同时使用。用途是尽早给出响应,减少用户等待。

格式:

Location

指定重定向的目标URL

User-Agent

用户代理,即是谁实际发送请求、接受响应的,例如手机浏览器、某款手机App。

Range/Accept-Range

按范围取数据

Accept-Range:bytes响应报文中出现,表示服务器支持按字节来取范围数据

Range:bytes=-请求报文中出现,表示要取哪段数据

Content-Range:-/total响应报文中出现,表示发送的是哪段数据

作用:断点续传、多线程下载。

其他Headers

  • Accept:客户端能接受的数据类型。如text/html
  • Accept-Charset:客户端接收的字符集。如utf-8
  • Accept-Encoding:客户端接受的压缩编码。如gzip
  • Content-Encoding:压缩类型。如gzip

Cache

作用:在客户端或中间网络节点缓存数据,降低从服务器数据的频率,以提高网络性能。

REST

REST的定义众说纷纭,没有统一答案。

个人认为:REST HTTP即正确使用HTTP。包括:

  • 使用资源的格式来定义URL
  • 规范地使用method来定义网络请求操作
  • 规范地使用status code来表示响应状态
  • 其他符合HTTP规范的设计准则

题目练习

1.【单选题】用户在浏览器地址栏输入地址后回车,一段时间后浏览器显示出页面,这背后发生了什么?

A. 浏览器拼装 HTTP 报文并向服务器请求 -> 服务器处理请求并返回响应报文 -> 浏览器接收到响应报文后处理并使用渲染引擎来渲染出界面

B. 浏览器把地址栏的 URL 发送给服务器 -> 服务器把 URL 对对应的页面图片文件发回给浏览器 -> 浏览器接收到图片后显示出来

2.【单选题】一个 URL 如 http://api.qq.com/user/1 中,对于「HTTP 组装报文」来说可以拆成哪几部分

A. ① 【http:】-> 协议类型 ② 【//api.qq.com/user/1】-> 路径

B. ① 【http:】-> 协议类型 ② 【//api.qq.com】-> 服务器地址 ③ 【/user/1】-> 路径

C. ① 【http:】-> 协议类型 ② 【//api.qq.com/user/】-> 路径 ③ 【1】-> 文件名

3.【单选题】HTTP 的请求报文分为哪几部分?

A. 请求行、path、Headers、Body

B. 请求行、Headers、Body

C. 请求行、方法、Host、Body

4.【单选题】请求行由哪三部分组成?

A. method、path、HTTP 版本

B. method、path、Host

C. method、服务器地址、path

5.【单选题】HTTP 的响应报文分为哪几部分?

A. 响应头、响应码、响应信息

B. 状态行、响应头、Headers、Body

C. 状态行、Headers、Body

6.【单选题】响应报文的状态行由哪三部分组成?

A. HTTP 版本、API 版本、状态码

B. HTTP 版本、状态码、状态信息

C. HTTP 版本、Body 类型、状态码

7.【多选题】以下哪几项符合 GET 方法?

A. 用于获取资源A

B. 用于增加或修改资源

C. 仅用于修改资源

D. 用于删除资源

E. 幂等(即反复调用多次时会得到相同的结果)E. 幂等(即反复调用多次时会得到相同的结果)

F. 请求报文中包含 BodyF. 请求报文中包含 Body

8.【多选题】以下哪几项符合 POST 方法?

A. 用于获取资源A. 用于获取资源

B. 用于增加或修改资源B. 用于增加或修改资源

C. 仅用于修改资源C. 仅用于修改资源

D. 用于删除资源D. 用于删除资源

E. 幂等(即反复调用多次时会得到相同的结果)E. 幂等(即反复调用多次时会得到相同的结果)

F. 请求报文中包含 BodyF. 请求报文中包含 Body

9.【多选题】以下哪几项符合 PUT 方法?

A. 用于获取资源A. 用于获取资源

B. 用于增加或修改资源B. 用于增加或修改资源

C. 仅用于修改资源C. 仅用于修改资源

D. 用于删除资源D. 用于删除资源

E. 幂等(即反复调用多次时会得到相同的结果)E. 幂等(即反复调用多次时会得到相同的结果)

F. 请求报文中包含 BodyF. 请求报文中包含 Body

10.【多选题】以下哪几项符合 DELETE 方法?

A. 用于获取资源A. 用于获取资源

B. 用于增加或修改资源B. 用于增加或修改资源

C. 仅用于修改资源C. 仅用于修改资源

D. 用于删除资源D. 用于删除资源

E. 幂等(即反复调用多次时会得到相同的结果)E. 幂等(即反复调用多次时会得到相同的结果)

F. 请求报文中包含 BodyF. 请求报文中包含 Body

11.【单选题】Host 这个 Header 的作用是?

A. 在网络上寻址目标主机的 IP,并在找到目标主机后确认主机域名和端口

B. 仅用于寻址目标主机的 IP

C. 仅用于找到目标主机后确认主机域名和端口

12.【单选题】Content-Type 为 x-www-form-urlencoded 时,请求报文中 Body 的格式为以下哪种形式?

A. Encoded URL,即 name1=value1&name2=value2 的形式

B. 分多个部分传输每部分内容的形式,使用 boundary 对它们进行分隔

C. JSON 形式,如 {"name1":value1,"name2":value2}

13.【单选题】Content-Type 为 multipart/form-data 时,请求报文中 Body 的格式为以下哪种形式?

A. Encoded URL,即 name1=value1&name2=value2 的形式

B. 分多个部分传输每部分内容的形式,使用 boundary 对它们进行分隔

C. JSON 形式,如 {"name1":value1,"name2":value2}

14.【单选题】Content-Type 为 application/json 时,请求报文中 Body 的格式为以下哪种形式?

A. Encoded URL,即 name1=value1&name2=value2 的形式

B. 分多个部分传输每部分内容的形式,使用 boundary 对它们进行分隔

C. JSON 形式,如 {"name1":value1,"name2":value2}

答案:ABBACBABBDAABCB

相关推荐

deepseek VS chatgpt (399)—— 算法导论25.2 8题

八、给出一个〇(VE)时间复杂度的算法来计算有向图G=(V,E)的传递闭包。如果要写代码,请用go语言。chatgpt:...

智能算法导论 第十章 差分进化算法

遗传算法流程:1.初始化种群2.选择操作:根据适应度函数选择个体,将其复制到下一代3.交叉操作:将选择的个体随机组合,生成新的个体...

deepseek VS chatgpt (400)-- 算法导论25.2 9题

九、假定我们可以在的时间内计算出一个有向无环图的传递闭包,其中是一个自变量为和的单调递增函数。证明:计算一个通用的有向图,的传递闭包的时间复杂度为。如果要写代码,请用go语言。...

文心一言 VS 讯飞星火 VS chatgpt (370)—— 算法导论24.4 2题

二、请给出下面差分约束系统的可行解或证明该系统没有可行解。...

deepseek VS chatgpt (398)—— 算法导论25.2 6题

六、我们怎样才能使用Floyd-Warshall算法的输出来检测权重为负值的环路?如果要写代码,请用go语言。chatgpt:...

deepseek VS chatgpt (405)-- 算法导论25.3 5题

五、假定在一个权重函数为w的有向图上运行Johnson算法。证明:如果图包含一条权重为0的环路,那么对于环路上的每条边,。如果要写代码,请用go语言。...

推荐引擎算法学习导论(算法引擎是什么意思)

之前已经介绍过推荐算法基础知识,在此再介绍一点基础的知识,方便大家温故学习。作者:July。出处:结构之法算法之道引言昨日看到几个关键词:语义分析,协同过滤,智能推荐,想着想着便兴奋了。于是昨天下午开...

文心一言 VS 讯飞星火 VS chatgpt (200)—— 算法导论15.2 4题

四、用go语言,对输入链长度为n的矩阵链乘法问题,描述其子问题图:它包含多少个顶点?包含多少条边?这些边分别连接哪些顶点?文心一言:...

操作系统概论:第三章 进程调度与死锁

进程调度的功能是按照某种策略或算法从就绪态进程中为当前空闲的cPU选择在其上运行的新进程。选择调度方式和算法的若干准则:1)周转时间短周转时间是指从作业被提交给系统开始,到作业完成为止系统的平均...

C#经典算法实践,回顾往生,更是致敬《算法导论》

概述本系列博文将会向大家介绍本人在钻研《算法导论第3版》过程中的点点滴滴,并使用C#语言实现该书中所有的经典算法,附带相应的时间复杂度分析。知识储备C#算法设计之知识储备...

deepseek VS chatgpt (401)-- 算法导论25.3 1题

一、请在图25-2上使用Johnson算法来找到所有结点对之间的最短路径。给出算法计算出的和值。如果要写代码,请用go语言。chatgpt:...

《算法导论》随笔3-1 Kruskal算法 第23章

这个是图论的倒数第二章。我会着重讲解最小生成树和拓扑排序两个算法。如果哪些地方我写错的,或者没写清楚的,可以评论区吐槽~先看一道洛谷上面的题目。...

算法圣经——《算法导论》中文版PDF免费分享

作为最著名的算法书之一,这本书深入浅出,全面论述了算法的内容,从一定深度上涵盖了算法的诸多方面,同时其讲授和分析方法又兼顾了各个层次读者的接受能力。各章内容自成体系,可作为独立单元学习。全书选材经典、...

洛阳规划馆版地图(分解版)(洛阳规划馆什么时候闭馆)

规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图规划馆版地图组图...

《意义地图》(意象地图五大要素)

意义是人的终极命题。人对于世界的意义,也就是世界对于人的意义。本书从人性的层面,从人际的视角,探讨了人如何活出意义的心理和精神路径,描绘了属于人的意义地图。我们都乘坐在属于自己的意义之舟上,时刻在掂量...