Postman中四種請求體格式用法全解析及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)文章
Git與遠程倉庫進行關(guān)聯(lián)設(shè)置方式
本文介紹了如何安裝和配置Git,以及如何將其與GitHub和Gitee等遠程倉庫進行關(guān)聯(lián),通過修改配置文件和生成SSH密鑰,可以實現(xiàn)將本地項目同時推送到多個遠程倉庫2024-11-11如何刪除Git本地倉庫和刪除GitHub上的Git遠程倉庫Repository(推薦)
這篇文章主要介紹了如何刪除Git本地倉庫和刪除GitHub上的Git遠程倉庫Repository,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09wireshark網(wǎng)絡(luò)抓包工具的使用教程
WireShark是非常流行的網(wǎng)絡(luò)抓包分析工具,可以截取各種網(wǎng)絡(luò)數(shù)據(jù)包,并顯示數(shù)據(jù)包詳細信息,下面就跟隨小編一起學習一下wireshark的具體使用吧2023-08-08Postman全局注冊方法及對返回數(shù)據(jù)可視化處理
這篇文章主要為大家介紹了Postman全局注冊方法及對返回數(shù)據(jù)可視化處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02