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

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

haoteby 2025-03-25 13:22 7 浏览

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

相关推荐

Python爬虫进阶教程(二):线程、协程

简介线程线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能...

A320-V2500发动机系统FADEC介绍(2)

目的全权数字发动机控制(FADEC)系统在所有飞行和运行阶段提供全范围发动机控制。...

三国志战棋版:玩家“二叔”用这套群DOT在比武中拿下31胜5负

声明:本文首发于今日头条,而后发布于“鼎叔闯三棋”的微信公众号、抖音、哔哩哔哩和小红书平台,如果在其他平台就是抄袭。...

真正的独一无二:Dot One 推出 DNA 定制系列 139英镑起

相信很多人在挑选衣物时有着这样的困扰,综合了性价比、面料等因素后好不容易找到了心仪的款式,还要担心是否会撞衫,不管是擦肩而过的陌生人还是身边的熟人,都令人尴尬。小部分人为此热衷于购买少量的古着或者限量...

崩铁:周年庆福利再升级,老角色加强时间确定,3.xdot体系反转

#埃安UT大一圈高级很多#...

Dotgo推出RBMHub,扩大了CPaaS提供商的覆盖范围和功能

据telecompaper网7月15日报道,用于商业消息传递的RichCommunicationServices(RCS)解决方案的领先提供商Dotgo宣布推出RBMHub。RBMHub的推出扩大了C...

深度解析:快照取消Dot职业的将何去何从

写在前面曾几何时,术士的出现便被冠以dot大师的名头,从远古时期的献祭腐蚀虹吸不如暗牧一个痛,到TBC上满dot=荣誉击杀+1,到wlk接近全暴击的冰晶腐蚀,再到CTM就算了吧MOP的各种变态吸x放...

星穹铁道:抽卡芙卡之前,你必须了解什么是dot!

卡妈终于上线了,可还是有很多人不明白什么是dot伤害,抽了卡妈直接玩起了直伤流,把一个持续伤害的引爆器玩成了打手,卡妈打dot伤害是远高于直伤的,有了卡妈的玩家一直了解dot,不然这卡妈就真被玩成四不...

游戏界的闪耀星辰陨落:悼念知名游戏博主″dotα牛娃″

无尽哀思!在数字时代浪潮中,游戏不仅是消遣娱乐的代名词,更是连接心灵的桥梁,构筑了无数人的青春回忆。在这片浩瀚无垠的游戏宇宙中,有这样一位博主,他以独特的风采、深邃的洞察力和无尽的热情,成为了玩家心中...

直击2017新加坡同性恋聚会Pink Dot,自由爱!

今年的“粉红点”又来啦~这个支持LGBT群体(男女同志、双性恋、跨性别等)群体的活动,从2009年起,已经在新加坡举办8年了!”这个非营利的同性恋权益活动,主要是希望大家了解到,不管一个人的性倾向或...

python-dotenv,一款超级实用处理环境变量python库

python-dotenv,一款超级实用处理环境变量python库python-dotenv概述:...

亚马逊语音助手毫无征兆发笑 诡异至极吓坏用户

来源:新华网美国电商亚马逊7日承诺,将更改名下“亚历克萨”语音系统设置,令它不会莫名发笑,免得吓坏用户。“亚历克萨”是亚马逊开发的语音助手软件,可服从用户语音指令完成对话、播放音乐等任务。依照原来设计...

2022最火英文网名男女生

精选好听英文昵称带翻译1.moveon(离开)2.Monster(怪物)3.Solo吉他手4.Finish.(散场)...

智能家具 RecycleDot 的出现给传统家具厂商带来新的挑战

从可穿戴手环、手表到智能衣服,智能硬件逐步渗透到每一个领域。最近有一对父子MikeSandru和JohnSandru在自家的车库中设计了一款智能家具RecycleDot,给日渐萧条的家具行...

欧洲通信卫星公司 OneWeb 敦促印度DoT尽早批准提供卫星宽带服务

据telecomtalk2月17日报道,欧洲通信卫星公司EutelsatOneWeb近日敦促印度电信部(DoT)尽快批准其在印度部署双地球站网关的计划,以便连接其近地轨道(LEO)全球卫星星座,并...