目录
在 Postman 中,使用
POST
方式时,Body
项中有几种不同的数据传输方式可供选择,它们之间的主要区别在于数据的格式和编码方式。以下是每种类型的详细解释:
1. None
- 描述:不发送请求体(body)。
- 用途:如果你的
POST
请求不需要发送任何数据(即不需要body
),可以选择这个选项。
2. form-data
-
描述:以
multipart/form-data
格式发送表单数据,常用于上传文件或传递包含文件和文本的混合数据。 -
特点:
- 数据分为多个部分(multipart),每个字段的值都可以是文本或文件。
- 常见于表单提交(特别是上传文件时)。
- Postman 提供了一个图形界面,你可以选择文件和文本字段来填充数据。
-
用途:
- 当你需要发送混合类型的数据(文本和文件)时,比如文件上传场景。
- Django 的
request.FILES
可用于处理文件上传。
-
示例:
请求体的格式如下,文件和文本数据会被分开:POST /upload HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file"; filename="example.jpg" (binary data) ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="description" Image description ----WebKitFormBoundary7MA4YWxkTrZu0gW--
3. x-www-form-urlencoded
-
描述:以 URL 编码的方式发送键值对数据,这种方式的
POST
数据在HTTP
报头中以application/x-www-form-urlencoded
作为Content-Type
。 -
特点:
- 数据格式类似于查询字符串(URL 中的参数),每个键值对用
&
分隔。 - 字符会进行 URL 编码(如空格被替换为
+
,特殊字符被转义)。 - 常见于传统的 HTML 表单提交。
- 数据格式类似于查询字符串(URL 中的参数),每个键值对用
-
用途:
- 当表单数据较为简单(文本字段)且不涉及文件时,比如登录、提交简单表单。
-
示例:
请求体的格式如下:POST /submit-form HTTP/1.1 Content-Type: application/x-www-form-urlencoded name=JohnDoe&email=john%40example.com&message=Hello+World
4. raw
-
描述:允许你以纯文本的形式发送数据,并支持不同的数据格式(如
JSON
、XML
、HTML
、文本等)。 -
特点:
- 你可以手动选择数据格式,比如
JSON
、XML
等,Postman 会自动设置Content-Type
。 - 适合发送结构化数据,比如 JSON 数据。
- 你可以手动选择数据格式,比如
-
用途:
- 当你需要发送复杂的结构化数据时,如 API 请求发送 JSON 或 XML 数据。
-
示例:
发送 JSON 数据的请求体:POST /api/user HTTP/1.1 Content-Type: application/json { "name": "John Doe", "email": "[email protected]", "message": "Hello Django" }
发送 XML 数据的请求体:
POST /api/user HTTP/1.1 Content-Type: application/xml <user> <name>John Doe</name> <email>[email protected]</email> <message>Hello Django</message> </user>
5. binary
-
描述:用于以二进制格式发送数据,比如文件的原始二进制数据。
-
特点:
- 适用于上传文件的场景,Postman 会允许你从文件系统中选择文件来发送。
- 不进行任何数据格式化,直接发送文件的二进制内容。
-
用途:
- 适合上传文件时使用,比如图片、视频、PDF 等。
-
示例:
发送文件时的请求头可能类似这样:POST /upload HTTP/1.1 Content-Type: application/octet-stream (binary data)
6. GraphQL
-
描述:专用于发送 GraphQL 查询数据。Postman 提供了一个专门的选项来发送 GraphQL 请求。
-
特点:
- Postman 会帮助你设置 GraphQL 查询的结构,包括查询和变量。
- 通常数据会以
application/json
格式发送。
-
用途:
- 用于与支持 GraphQL 的 API 交互,通过单个请求获取多个资源,或者根据具体需求获取特定数据。
-
示例:
发送 GraphQL 请求:POST /graphql HTTP/1.1 Content-Type: application/json { "query": "query { user(id: 1) { name email } }", "variables": {} }
总结
选项 | 说明 | 用途 |
---|---|---|
None | 不发送请求体(Body)。 | 请求不需要发送任何数据时。 |
form-data | 以 multipart/form-data 格式发送表单数据,适合文件上传。 |
需要发送文件或包含文件的表单时。 |
x-www-form-urlencoded | 以 URL 编码的格式发送键值对数据,适合简单的文本数据。 | 表单数据较为简单,且不涉及文件时。 |
raw | 允许发送纯文本数据,支持多种格式(如 JSON、XML、HTML)。 | 发送复杂结构化数据,如 JSON、XML。 |
binary | 以二进制格式发送文件数据,直接传输文件内容。 | 需要上传文件的原始二进制数据时。 |
GraphQL | 用于发送 GraphQL 查询请求。 | 与支持 GraphQL 的 API 进行交互时。 |
选择哪种方式取决于你需要发送的数据类型以及 API 的要求。
标签:Body,binary,form,文件,data,发送,GraphQL,数据 From: https://www.cnblogs.com/anyux/p/18451560