一、简介
1、Http: HyperText Transfer Protocol 超文本传输协议
协议:双方或多方遵守的 约定
Http协议是 客户端和服务端之间通讯时发送数据需要遵守的协议
http传输的数据叫做报文
2、http特点:
(1)基于TCP协议,面向连接,安全
(2)基于请求-响应模型。
一次请求对应一次响应。
(3)http协议是无状态的。
对于事务处理没有记忆能力。每次请求之间是独立的,不同请求之间不能共享数据。java中通过会话技术(cookie、session)来解决这个问题
二、请求方式
http分为GET和POST两种请求方式
GET和POST两种请求的区别:
(1)GET请求参数在请求行中,POST的请求参数在请求体中
(2)GET请求参数有条数限制,POST的请求参数没有限制
1、GET:包括请求行和请求头
(1)请求行:
a、请求方式 GET
b、请求路径 /api/projectResource/queryAllMenuForUser/7
c、请求协议的版本 HTTP/1.1
(2)请求头:
Accept: 告诉服务器,浏览器可以接收的资源类型
Accept-Encoding: 浏览器可以支持的压缩类型
Accept-Language: 接收的语言
Connection: 连接状态,包括keep-alive,closed
Host: ip和端口号
Referer: 发送请求时浏览器的地址
User-Agent: 浏览器信息
例:
// 请求行 GET /api/projectResource/queryAllMenuForUser/7 HTTP/1.1 // 请求头 Accept: application/json, text/plain, */* Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Accept-Version: 1.0.0 Auth-Type: project Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRoX3R5cGUiOiJwcm9qZWN0Iiwicm9sZSI6IumhueebrueuoeeQhuWRmCzns7vnu5_nrqHnkIblkZgiLCJjb2RlIjoiMjAwIiwidXNlcl9uYW1lIjoienB4IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV_ns7vnu5_nrqHnkIblkZgiLCJST0xFX-mhueebrueuoeeQhuWRmCJdLCJjbGllbnRfaWQiOiI2MDBseV9hcGlfY2xpZW50IiwiYXVkIjpbIjYwMGx5X2FwaV9yZXNvdXJjZSJdLCJ1c2VyX2lkIjo3LCJzaWduX2NvZGUiOiJ6a2duIiwic2NvcGUiOlsicmVhZCIsIndyaXRlIl0sInVzZXJfcmVhbG5hbWUiOiLlvKDpuY_ovakiLCJsb2dvIjoiIiwiZXhwIjoxNjUyMTU1ODYzLCJqdGkiOiIzZjFiMjYyMC0zNDFjLTQxMzEtOTA0NS01MTc2ZThlNzc4NGYifQ.A35WDYEZjuO0-wN73hN0qac2wiEGCecgjKVl5ldihs2iGrq6gHlXQSoj2sfP-fAn9caeSm_KLNbmje3d5Zh1QkXzbTVOw6yw9FS4AvmavTk6VD9aXcekW-zqFE2LFqJdFdQEX-ds9e44ItC3Z7vVGeBvzuhHi0oC89T0jliGDVbr7kEc2rGfNjSLbifhyQZjVv9bjFQvOny3dKaHBfCx1fSniZDNWx11nrzaWRq6dtdKs_ErFQ368Z8tLg3jTzjX9JCF0ZSuSHrPAOz657MEnMDxcu6qATPysLZjbjo0a_OCzRmjisiT28v80OL9cvQB89IgUAvzkw1A3bPugPk_gA Connection: keep-alive Host: 124.70.89.33 Referer: http://124.70.89.33/600ly-feoms/device-manage/areaDevice/manage User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
2、POST:包括请求行、请求头、请求空行、请求体
(1)请求行:
a、请求方式 POST
b、请求路径 /api/projectUserRole/setProjectAdmin
c、请求协议的版本 HTTP/1.1
(2)请求头:
Accept: 告诉服务器,可以接收的类型
Accept-Encoding: 接收的编码格式
Accept-Language: 接收的语言
Connection: 连接状态,包括keep-alive,closed
Content-Length: 请求数据的长度
Content-Type: 请求数据的类型
Host: ip和端口号
Referer: 发送请求时浏览器的地址
User-Agent: 浏览器信息
(3)请求空行
(4)请求体:signCode=600ly&userId=22
例:
POST /api/projectUserRole/setProjectAdmin HTTP/1.1 Accept: application/json, text/plain, */* Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Connection: keep-alive Content-Length: 24 Content-Type: application/x-www-form-urlencoded Host: 129.20.86.53 Origin: http://129.20.86.53 Referer: http://129.20.86.53/permission/user User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36 signCode=600ly&userId=22
三、HTTP协议的响应格式
(1)响应行
a、响应协议
b、响应状态码
c、响应标识
(2)响应头
Server: 服务器
Date: 格林尼治标准时间
Content-Type: 响应数据类型
Transfer-Encoding: chunked
Connection: 连接状态
Content-Encoding: 数据编码格式
(3)响应空行
(4)响应体
HTTP/1.1 200 OK Server: nginx Date: Mon, 09 May 2022 09:43:38 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Content-Encoding: gzip Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Vary: origin,access-control-request-method,access-control-request-headers,accept-encoding { "code" : "200", "message" : "success", "data" : { "total" : 2, "totalPage" : 1, "rows" : [ { "id" : 200300, "devGroupId" : "90526686-4182-fdc4-9264-2df6acc3185a", "authorityName" : "只读", "sortValue" : 0, "status" : "1" }, { "id" : 200301, "devGroupId" : "726d7493-d87a-400d-3021-0f4eb00675a8", "authorityName" : "只读", "sortValue" : 0, "status" : "1" }] } }
响应码:
2xx:请求成功
3xx:请求重定向
4xx:客户端错误
404:服务器已经接收到请求,但是请求地址不存在
5xx:服务器已经接收到请求,服务器代码出现错误
MIME:Multipurpose Internet Mail Extensions 多功能因特网邮件扩充服务。格式为 大类型/小类型