Fork me on GitHub


在 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 表单提交。
  • 用途

    • 当表单数据较为简单(文本字段)且不涉及文件时,比如登录、提交简单表单。
  • 示例
    请求体的格式如下:

    POST /submit-form HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    name=JohnDoe&email=john%40example.com&message=Hello+World
    

4. raw

  • 描述:允许你以纯文本的形式发送数据,并支持不同的数据格式(如 JSONXMLHTML、文本等)。

  • 特点

    • 你可以手动选择数据格式,比如 JSONXML 等,Postman 会自动设置 Content-Type
    • 适合发送结构化数据,比如 JSON 数据。
  • 用途

    • 当你需要发送复杂的结构化数据时,如 API 请求发送 JSON 或 XML 数据。
  • 示例
    发送 JSON 数据的请求体:

    POST /api/user HTTP/1.1
    Content-Type: application/json
    
    {
        "name": "John Doe",
        "email": "john@example.com",
        "message": "Hello Django"
    }
    

    发送 XML 数据的请求体:

    POST /api/user HTTP/1.1
    Content-Type: application/xml
    
    <user>
        <name>John Doe</name>
        <email>john@example.com</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 的要求。

posted on 2024-10-08 14:30  anyux  阅读(731)  评论(0)    收藏  举报