网络请求传参的几种方式和概念

528 阅读3分钟

HTTP请求数据通常由请求头(Request Headers)和请求正文(Request Body)两部分组成

请求头传参(Request Headers)

  1. 请求头部参数(Request Header Parameters):这是包含在请求头中的键值对,通常用于传递身份验证信息、请求格式等元数据。
    例如:Authorization: Bearer {token}。
  2. Cookie 参数(Cookie Parameters):这是存储在浏览器中的键值对,通常用于跟踪用户会话状态和存储用户首选项等信息。
    例如:cookie_name=cookie_value。

请求正文传参(Request Body)

  1. 查询参数(Query string parameters):这是在 URL 中传递的键值对,通常用于筛选、排序和分页等操作。将参数追加到URL末尾的方式,并通过问号(?)与URL路径部分进行分隔。 例如:example.com/api/product…

image.png

  1. 请求体参数(Request Body Parameters):是HTTP请求中承载数据的部分,通常用于向服务器传递结构化的数据。请求正文可以采用多种不同的Content-Typ格式,下面介绍几种常见的请求正文格式和它们的特点:
1.  application/x-www-form-urlencoded

在这种格式下,请求正文是一个以"&"符号分隔的键值对(key-value pairs),每个键值对中使用"="符号将键名和键值连接起来。例如,以下是一个使用application/x-www-form-urlencoded格式的POST请求的示例:

POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded

username=johndoe&password=letmein

2.  multipart/form-data

在这种格式下,请求正文被分为多个部分,每个部分与其他部分之间使用boundary字符串进行分隔。每个部分包含三个元素:Content-DispositionContent-Type和数据。例如,以下是一个使用multipart/form-data格式的POST请求的示例:

POST /upload HTTP/1.1
Host: www.example.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="username"

johndoe
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="example.jpg"
Content-Type: image/jpeg

<binary data>
------WebKitFormBoundary7MA4YWxkTrZu0gW--


3.  application/json
在这种格式下,请求正文是一个JSON字符串,可以包含各种类型的数据结构。例如,以下是一个使用application/json格式的POST请求的示例:
POST /api/users HTTP/1.1
Host: api.example.com
Content-Type: application/json

{
  "name": "John Doe",
  "email": "johndoe@example.com",
  "age": 30
}
4.  text/plain

在这种格式下,请求正文是一个纯文本字符串,通常用于发送简单的键值对数据。例如,以下是一个使用text/plain格式的POST请求的示例:
POST /guestbook HTTP/1.1
Host: www.example.com
Content-Type: text/plain

username=johndoe&message=Hello+World

  1. 路径参数(Path Parameters):这是从 URL 中提取的变量,通常用于标识资源的唯一性或区分不同类型的资源。
    例如:example.com/api/users/{…

Chrome中Payload的显示

如果常用chrome的人会发现network中会出现payload面板,里面会出现Query String Parameters、Form Data和Request Poyload格式,它们是请求中承载数据的方式。

image.png

image.png
chrome中payload指数据载入部分

在axios中params的数据是Query String Parameters,data的数据是Request Poyload,content-type设置为'multipart/form-data'是Form

额外概念

请求负载(request payload):HTTP请求中承载数据的部分,包含了整个HTTP请求中的所有数据内容,包括请求头、查询字符串参数、请求正文等。请求负载的具体格式取决于请求的方法和请求头中的Content-Type值。
请求正文(request body):是HTTP请求中的一个组成部分,用于承载提交到服务器的数据。请求正文可以采用多种不同的格式,例如application/x-www-form-urlencoded、multipart/form-data、application/json等。请求正文通常出现在POST、PUT等请求方法中的请求主体中。

请求正文是请求负载中的一个组成部分,而请求负载则是整个HTTP请求中的数据负载。请求负载是根据HTTP协议规定的请求格式进行构造和解析的,包含了HTTP请求中所有的数据内容。