什么是HTTP协议?

目录

概念

特点

请求数据格式

请求行

请求头

请求体

响应数据格式

响应行

响应头

响应体

相关的类

HttpServletRequest

HttpServletResponse


概念

HTTP全称Hyper Text Transfer Protocol,即超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

什么是HTTP协议?_第1张图片

特点

1. 基于TCP协议,面向连接,安全

2. 基于请求-响应模型,一次请求对应一次响应

3. HTTP协议是无状态的协议,对于事物处理没有记忆能力,每次请求-响应都是独立的

缺点:多次请求之间不能共享数据

优点:速度快

请求数据格式

例如:

POST /test HTTP/1.1
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 41
Content-Type: application/json;charset=UTF-8
Host: localhost:8080
Origin: null
Pragma: no-cache
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0
sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"

{"username":"艾伦","password":"123abc"}

请求行

POST /test HTTP/1.1

请求数据的第一行,包含请求方式资源路径协议

请求头

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 41
Content-Type: application/json;charset=UTF-8
Host: localhost:8080
Origin: null
Pragma: no-cache
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0
sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"

从第二行开始,格式为key: value

常见的请求头:

请求头 含义
Host 请求的主机名
User-Agent 浏览器的版本
Accept 浏览器能接收的资源类型
Accept-Language 浏览器偏好的语言
Accept-Encoding 浏览器支持的压缩类型
Content-Type 请求主体的数据类型
Content-Length 请求主体的大小,单位:字节

请求体

{"username":"艾伦","password":"123abc"}

请求体和请求头之间有一个空行,请求体用于存放请求参数

GET请求和DELETE请求没有请求体,请求参数在请求行中。POST请求和PUT请求有请求体,请求参数在请求体中。

响应数据格式

例如:

HTTP/1.1 200
Access-control-Allow-Origin: null
Access-Control-Allow-Methods: GET,POST,OPTIONS,PUT,DELETE,PATCH
Content-Type: application/json
Content-Length: 41
Date: Mon, 18 Dec 2023 10:50:20 GMT
Keep-Alive: timeout=60
Connection: keep-alive

{"username":"艾伦","password":"123abc"}

响应行

HTTP/1.1 200

响应数据的第一行,包含协议状态码

响应头

Access-control-Allow-Origin: null
Access-Control-Allow-Methods: GET,POST,OPTIONS,PUT,DELETE,PATCH
Content-Type: application/json
Content-Length: 41
Date: Mon, 18 Dec 2023 10:50:20 GMT
Keep-Alive: timeout=60
Connection: keep-alive

从第二行开始,格式为key: value

响应体

{"username":"艾伦","password":"123abc"}

响应体和响应头之间有一个空行,响应体用于存放响应数据

状态码类型:

类型 含义
1xx 响应中:临时状态码,表示请求已经接收,告诉客户端应该继续请求或者如果请求已经完成则忽略。
2xx 成功:表示请求已经被成功接收,处理已完成。
3xx 重定向:重定向到其他地方,让客户端再发起一次请求以完成整个处理。
4xx 客户端错误:处理发生错误,责任在客户端。例如,请求了不存在的资源、客户端未被授权、禁止访问等。
5xx 服务器错误:处理发生错误,责任在服务端。例如,程序抛出异常等。

常见的响应头:

响应头 含义
Content-Type 响应内容的类型
Content-Length 响应内容的长度
Content-Encoding 响应压缩算法
Cache-Control 客户端缓存方式
Set-Cookie 为当前域设置Cookie

相关的类

HTTP请求对象:HttpServletRequest

HTTP响应对象:HttpServletResponse

HttpServletRequest

什么是HTTP协议?_第2张图片

HttpServletResponse

什么是HTTP协议?_第3张图片

你可能感兴趣的:(基本概念,http,spring,boot,java,后端)