在计算机网络中,HTTP请求由客户端向服务器发送,用于获取或提交数据。Request(请求)是指客户端发出的HTTP请求消息,通常由以下三部分组成:

1、请求行:请求行包含请求方法、请求URL和HTTP协议的版本号。

METHOD PATH PROTOCOL\r\n

示例:
GET /index.html HTTP/1.1\r\n

 2、请求头部:请求头部是一组键值对,用于描述请求的特定属性,如浏览器类型、接收的数据类型、授权信息等。由多个键值对组成,每一个键值对用冒号分隔,每个键值对独占一行,最后以空行结束。常见的请求头有 User-Agent、Host、Accept、Content-Type 等等。

下面是一些常见的HTTP请求头:

  1. User-Agent:客户端使用的浏览器名称和版本号,可以用来确定浏览器兼容性。
  2. Accept:客户端接受的内容类型(MIME类型),用逗号分隔。例如:“text/html, application/xhtml+xml, application/xml”。
  3. Accept-Language:客户端接受的语言,用逗号分隔。
  4. Accept-Encoding:客户端接受的编码格式,例如:“gzip, deflate, br”。
  5. Referer:客户端的请求来源,主要用于防盗链和统计分析。
  6. Connection:客户端希望使用的连接类型,例如:“keep-alive”。
  7. Host:服务器的主机名和端口号,例如:“www.example.com:80”。
  8. Cache-Control:缓存控制指令,例如:“no-cache”。
  9. Authorization:客户端使用的身份验证信息,例如基本身份认证所需的HTTP验证凭据。
  10. Content-Type:请求体的MIME类型,例如:“application/json”。
key1: value1\r\n
key2: value2\r\n
\r\n

示例:
Host: www.example.com\r\n
Content-Type: application/json\r\n
Authorization: Bearer xxxxxxxx\r\n
\r\n

3、请求体:请求体是可选的,通常用于POST请求或其他一些需要提供额外数据的请求中。请求正文中通常包含表单数据、JSON数据、XML数据等。

{ "key": "value" }

请求体的格式类型取决于Content-Type请求头字段。常见的请求体格式有:

  1. application/x-www-form-urlencoded:这是最常见的格式类型之一,通常用于HTML表单。数据格式类似于查询字符串,即“key1=value1&key2=value2”的格式。
  2. multipart/form-data:这种格式可以用于上传文件或二进制数据。请求体中每个部分都包含一个头和一个主体。
  3. application/json:这是一种使用JSON格式表示数据的格式类型。它比较灵活、易于解析,并适用于RESTful API等场景。
  4. text/plain:这是一种纯文本格式类型,可以用于传输简单的文本数据。

以下是Request中常用的一些属性和方法:

  1. method:表示HTTP请求方法(如GET、POST等)。
  2. url:表示请求URL地址(包括路径和查询参数)。
  3. headers:表示请求头信息,通常以键值对的形式存储在该属性中。
  4. body:表示请求正文数据,在POST请求中通常包含表单数据或JSON/XML数据。
  5. cookies:表示客户端发出的Cookie信息,通常也以键值对的形式存储在该属性中。
  6. query_params:表示通过查询参数传递的参数,通常也以键值对的形式存储在该属性中。

除了上述属性之外,Request还提供了一些实用的方法,例如:

  1. json():解析请求正文数据为JSON对象。
  2. form():解析请求正文数据为表单对象。
  3. text():将请求正文数据转换为字符串格式。
  4. content():获取请求正文数据的原始字节数据。
  5. get_header():获取指定请求头部信息。