欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Postman中四種請求體格式用法全解析及SpringBoot接收指南

 更新時間:2025年08月06日 09:59:57   作者:zk_xyb  
在接口開發(fā)中,請求體格式的選擇直接影響數(shù)據(jù)傳輸?shù)男屎驼_性,本文將詳細解析Postman中四種請求體格式的區(qū)別以及SpringBoot接收指南,感興趣的小伙伴可以了解下

在接口開發(fā)中,請求體格式的選擇直接影響數(shù)據(jù)傳輸?shù)男屎驼_性。Postman 作為主流的接口調(diào)試工具,提供了 Form Data、x-www-form-urlencoded、Raw、Binary 四種常用請求體格式。本文將詳細解析這四種格式的區(qū)別,重點對比 Form Data 與 x-www-form-urlencoded,并結(jié)合 Spring Boot 示例說明如何正確接收參數(shù)。

一、四種請求體格式的核心區(qū)別

Postman 的 Body 選項中,四種格式的設(shè)計初衷和適用場景差異顯著,具體如下:

1. Form Data(multipart/form-data)

本質(zhì):通過“分隔符(boundary)”分割多個鍵值對的復合格式,支持文本和二進制數(shù)據(jù)(如文件)。

核心特點

  • 每個字段獨立成塊,包含字段名、內(nèi)容類型(如文本/文件)等元信息。
  • 非 ASCII 字符(如中文、特殊符號)無需手動編碼,直接傳輸原始字節(jié)。
  • 支持同時傳遞文本和文件(例如:上傳用戶頭像時,同時傳遞用戶 ID 和昵稱)。

請求體示例(簡化版):

--Boundary123456  // 分隔符(自動生成)
Content-Disposition: form-data; name="username"  // 文本字段名

張三  // 字段值(中文無需編碼)
--Boundary123456
Content-Disposition: form-data; name="avatar"; filename="head.jpg"  // 文件字段
Content-Type: image/jpeg  // 文件類型

[二進制文件內(nèi)容]  // 直接傳輸文件字節(jié)
--Boundary123456--  // 結(jié)束符

2. x-www-form-urlencoded

本質(zhì):將鍵值對拼接為字符串(如 key1=value1&key2=value2),并對非 ASCII 字符進行 URL 編碼。

核心特點

  • 僅支持文本數(shù)據(jù),不支持文件傳輸(因編碼后為純文本,無法承載二進制)。
  • 數(shù)據(jù)體積小,編碼后為單一字符串,適合簡單表單提交(如登錄、搜索框查詢)。

請求體示例

username=%E5%BC%A0%E4%B8%89&age=20  // "張三"被URL編碼為%E5%BC%A0%E4%B8%89

3. Raw

本質(zhì):純文本格式,支持 JSON、XML、HTML 等結(jié)構(gòu)化數(shù)據(jù),需手動指定 Content-Type。

核心特點

  • 適合傳遞復雜結(jié)構(gòu)化數(shù)據(jù)(如 API 接口的 JSON 請求體)。
  • Postman 會根據(jù)選擇的格式自動設(shè)置 Content-Type(例如:選 JSON 則自動添加 application/json 頭)。

常見場景:后端接口要求接收 JSON 格式的用戶信息(如 {"name":"張三","age":20})。

4. Binary

本質(zhì):二進制數(shù)據(jù)流,對應 Content-Type: application/octet-stream。

核心特點

  • 僅支持單個二進制文件(如上傳壓縮包、圖片),無鍵值對概念。
  • 直接傳輸文件原始字節(jié),適合純文件上傳場景(如“上傳附件”功能)。

二、重點:Form Data 與 x-www-form-urlencoded 的核心區(qū)別

雖然兩者都以鍵值對形式傳輸數(shù)據(jù),但在編碼方式、支持類型、適用場景上有本質(zhì)區(qū)別,具體對比如下:

對比維度Form Data(multipart/form-data)x-www-form-urlencoded
編碼方式用分隔符分割多個字段,每個字段獨立成塊所有字段拼接為單一字符串,URL編碼
支持數(shù)據(jù)類型文本 + 二進制文件(如圖片、文檔)僅支持文本(無法傳輸文件)
非ASCII字符處理直接傳輸原始字節(jié)(無需編碼)強制URL編碼(如中文→%E5%BC%A0…)
數(shù)據(jù)體積較大(含分隔符和元信息)較?。冏址?/td>
適用場景上傳文件、混合文本與二進制數(shù)據(jù)簡單表單提交(登錄、搜索、參數(shù)提交)
Spring Boot接收差異支持 MultipartFile 接收文件僅支持文本參數(shù),無法接收文件

一句話總結(jié):如果需要傳文件,必須用 Form Data;如果只是簡單文本提交,x-www-form-urlencoded 更輕量。

三、Postman 中如何設(shè)置四種格式

1. Form Data 設(shè)置

步驟:Body → 選擇 form-data → 點擊“+”添加鍵值對。

  • 文本參數(shù):默認選“Text”,直接輸入鍵和值(如 username: 張三)。
  • 文件參數(shù):選擇“File”,點擊“Select Files”上傳文件(如 avatar: head.jpg)。

注意:Postman 會自動添加 Content-Type: multipart/form-data 及分隔符,無需手動設(shè)置。

2. x-www-form-urlencoded 設(shè)置

步驟:Body → 選擇 x-www-form-urlencoded → 直接添加鍵值對(如 name: 張三、age: 20)。

注意:Postman 會自動對非 ASCII 字符編碼(如“張三”→%E5%BC%A0%E4%B8%89),并設(shè)置 Content-Type: application/x-www-form-urlencoded。

3. Raw 設(shè)置

步驟:Body → 選擇 raw → 右側(cè)下拉框選格式(如 JSON)→ 輸入對應格式內(nèi)容(如 {"name":"張三","age":20})。

注意:格式需與內(nèi)容匹配(如選 JSON 就必須輸入合法 JSON 字符串)。

4. Binary 設(shè)置

步驟:Body → 選擇 binary → 點擊“Select File”選擇單個二進制文件(如 test.zip)。

注意:一次只能傳一個文件,無鍵名,僅傳輸文件字節(jié)流。

四、Spring Boot 中如何接收四種格式的參數(shù)

1. 接收 Form Data(multipart/form-data)

適用于文本+文件混合傳輸,用 @RequestParam 接收文本,MultipartFile 接收文件。

@RestController
public class FormDataController {
    // 接收文本+文件
    @PostMapping("/upload")
    public String handleFormData(
            @RequestParam("username") String username,  // 文本參數(shù)
            @RequestParam("avatar") MultipartFile avatar  // 文件參數(shù)
    ) {
        String filename = avatar.getOriginalFilename(); // 獲取文件名
        long fileSize = avatar.getSize(); // 獲取文件大小
        return "收到用戶:" + username + ",上傳文件:" + filename + "(大小:" + fileSize + "字節(jié))";
    }
}

2. 接收 x-www-form-urlencoded

適用于純文本鍵值對,直接用 @RequestParam 接收(與 Form Data 的文本參數(shù)接收方式一致)。

@RestController
public class UrlEncodedController {
    @PostMapping("/submit")
    public String handleUrlEncoded(
            @RequestParam("name") String name,  // 接收文本參數(shù)
            @RequestParam("age") Integer age    // 自動轉(zhuǎn)換類型
    ) {
        return "收到用戶:" + name + ",年齡:" + age;
    }
}

3. 接收 Raw

適用于結(jié)構(gòu)化數(shù)據(jù)(如 JSON、XML),用 @RequestBody 綁定到對象或字符串。

// 定義接收JSON的實體類
public class User {
    private String name;
    private Integer age;
    // 必須提供getter和setter(Spring通過反射賦值)
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public Integer getAge() { return age; }
    public void setAge(Integer age) { this.age = age; }
}

@RestController
public class RawController {
    // 接收JSON并自動綁定到User對象
    @PostMapping("/user")
    public String handleJson(@RequestBody User user) {
        return "用戶信息:姓名=" + user.getName() + ",年齡=" + user.getAge();
    }
    
    // 直接接收原始XML文本
    @PostMapping("/xml")
    public String handleXml(@RequestBody String xml) {
        return "收到XML內(nèi)容:" + xml;
    }
}

4. 接收 Binary

適用于單個二進制文件,用 MultipartFile 接收(與 Form Data 的文件接收方式相同)。

@RestController
public class BinaryController {
    @PostMapping("/upload-file")
    public String handleBinary(@RequestParam("file") MultipartFile file) {
        return "收到二進制文件:" + file.getOriginalFilename() 
               + ",類型:" + file.getContentType();
    }
}

五、總結(jié)

請求體格式適用場景核心特點Spring Boot 接收方式
Form Data文本+文件混合傳輸支持二進制,分隔符分隔@RequestParam(文本)+ MultipartFile(文件)
x-www-form-urlencoded純文本表單提交URL編碼,僅支持文本@RequestParam
Raw結(jié)構(gòu)化數(shù)據(jù)(JSON/XML等)純文本,需指定格式@RequestBody(綁定對象或字符串)
Binary單個二進制文件無鍵值對,原始字節(jié)流MultipartFile

掌握這四種格式的差異,尤其是 Form Data 與 x-www-form-urlencoded 的區(qū)別,能幫助我們在前后端聯(lián)調(diào)中快速選擇合適的傳輸方式,避免“傳文件失敗”“參數(shù)亂碼”等常見問題。

到此這篇關(guān)于Postman中四種請求體格式用法全解析及SpringBoot接收指南的文章就介紹到這了,更多相關(guān)Postman請求體格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論