一、HTTP请求结构
HTTP请求结构可以分为请求行、请求头和请求体三部分。
请求行
请求行是HTTP请求报文中的第一行,指定了该请求使用的方法、URL和协议版本。请求行包含以下三个部分:
a.HTTP请求方法:指定客户端请求服务器所用的方法,常用的方法有GET、POST、PUT、DELETE、PATCH等。
b.请求的资源路径:指定了请求的资源路径。
c.HTTP协议版本:指定了HTTP协议的版本,如HTTP/1.1等。
例如,请求行可以是这样的:
POST/api/loginHTTP/1.1
请求头
请求头紧随请求行之后,是HTTP请求报文的一部分,包含了客户端向服务器端发送的元数据。请求头的格式是“键(Key)-值(Value)”对,中间用冒号(:)分隔,多个键值对之间使用回车换行符(CRLF)分隔,例如:
Accept-Language:en-US,en;q=0.9Host:www.example.com
常见的请求头有:
a.Accept:指定客户端可处理的媒体类型。
b.Content-Type:指定请求体中的媒体类型。
c.User-Agent:指定客户端的浏览器类型、操作系统和版本信息。
d.Referer:指定来源于哪个页面或网站发出的请求。
e.Authorization:为客户端发送身份验证信息。
请求体
请求体是HTTP请求报文的最后一部分,包含了客户端向服务器端发送的实体数据。单个请求可以不含有请求体。请求体的格式根据实际的需要选择。常用的请求体格式有:
a.application/x-www-form-urlencoded:以URL编码的方式发送表单数据。
b.application/json:发送JSON格式的数据。
c.multipart/form-data:用于发送文件和二进制数据。
d.text/plain:纯文本格式的数据。
例如:
二、HTTP响应结构
HTTP响应结构可以分为状态行、响应头和响应体三部分。
状态行
状态行是HTTP响应报文中的第一行,包含了HTTP协议版本、状态码和状态描述。状态行的格式如下:
HTTP/1.1200OK
状态码通常由三位数字组成,表示对请求的处理结果。常见的状态码有:
a.2XX(成功):表示服务器成功地接收到、理解并接受了客户端请求。
b.3XX(重定向):表示客户端需要执行一些额外的步骤,才能完成请求。
c.4XX(客户端错误):表示客户端发送的请求包含错误语法或无法完成请求。
d.5XX(服务器错误):表示服务器遇到错误,无法完成请求。
响应头
响应头紧随状态行之后,是HTTP响应报文的一部分,包含了服务器向客户端发送的元数据。响应头的格式和请求头相同,为键值对的形式,例如:
Content-Type:application/jsonCache-Control:max-age=3600
常见的响应头有:
a.Content-Type:指定响应体的媒体类型。
b.Content-Length:指定响应体的长度。
c.Cache-Control:指定缓存控制策略。
d.Date:指定响应的日期时间。
e.Server:指定服务器的名称和版本信息。
响应体
响应体是HTTP响应报文的最后一部分,包含了服务器向客户端返回的实体数据。响应体格式根据实际需要而定,如HTML、JSON、XML、图片、视频等。
例如:
HTTP协议规定,在响应头中必须包含Content-Type,它用于描述响应体中实体的类型和字符集。Content-Type的格式一般为“type/subtype;charset=utf-8”,其中charset=utf-8指定了响应体的编码格式为UTF-8。常见的Content-Type类型有:
text/html:HTML格式的文本
text/plain:普通文本
application/json:JSON格式的数据
application/xml:XML格式的数据
image/jpeg:JPEG格式的图像
image/png:PNG格式的图像
除了Content-Type之外,HTTP协议还支持Content-Encoding响应头,用于指示响应体的压缩方法。常见的压缩方法有gzip和deflate,可以减少响应体的大小,提高传输效率。
例如,在使用gzip压缩后的响应体中,Content-Encoding响应头的值为“gzip”,Content-Type响应头的值为“text/html;charset=utf-8”。这样的响应体需要在客户端进行解压缩,然后按照指定的字符编码进行解码,才能得到原始的文本信息。
联系客服