# 请求(响应)结构

# 请求结构

  • 请求行
  • 请求头
  • 空行
  • 请求体

# 请求行

  • 请求方法
  • URL(请求路径)
  • HTTP版本
GET /user HTTP/1.1

# 请求头

本质上是一系列的键值对,用来提供额外的上下文及信息,以下是一些常用的字段

Key 用途
Host 指定服务器域名和端口号(可选)
User-Agent 包含客户端的信息
Accept 客户端可以接收那些类型的数据(服务器可以返回哪些数据)
Accept-Language 希望服务器优先选择的语言
Accept-Encoding 客户端支持的编码方式(服务器可以返回的编码类型)
Connection 通信完成后的连接状态(keep-alive/close)
Cookie 客户端保存的全部Cookie
Content-Length 请求体大小
Content-Type 请求体的数据类型
Authorization 令牌

# 空行

用来识别请求头结束

# 请求体

只有POST方法有

可选部分,当需要上传文件或者上传数据时被使用到,以下是一些常用类型(写在Content-Type中)
Content-Type 用途
application/x-www-form-urlencoded URL编码式的键值对,例如key1=value1&key2=value2
multipart/form-data 通常用于上传文件
application/json json文件
text/plain 纯文本
application/xml xml文件
application/octet-stream 二进制数据流

# 示例:

HTTP请求结构示例

# 响应结构

  • 状态行
  • 响应头
  • 响应体

# 状态行

  • HTTP协议版本
  • 状态码
  • 状态信息
HTTP/1.1 200 OK

# 响应头

和请求头类似,以键值对的形式存在,包含服务器信息,响应内容等,常见字段:

Key 用途
Content-Type 响应主体的类型
Content-Length 响应主体的长度
Server 服务器信息
Cache-Control 缓存指令
Expires 响应过期时间

# 响应体

服务器返回的实际数据