Postman中四種請(qǐng)求體格式用法全解析及SpringBoot接收指南
在接口開發(fā)中,請(qǐng)求體格式的選擇直接影響數(shù)據(jù)傳輸?shù)男屎驼_性。Postman 作為主流的接口調(diào)試工具,提供了 Form Data、x-www-form-urlencoded、Raw、Binary 四種常用請(qǐng)求體格式。本文將詳細(xì)解析這四種格式的區(qū)別,重點(diǎn)對(duì)比 Form Data 與 x-www-form-urlencoded,并結(jié)合 Spring Boot 示例說明如何正確接收參數(shù)。
一、四種請(qǐng)求體格式的核心區(qū)別
Postman 的 Body 選項(xiàng)中,四種格式的設(shè)計(jì)初衷和適用場(chǎng)景差異顯著,具體如下:
1. Form Data(multipart/form-data)
本質(zhì):通過“分隔符(boundary)”分割多個(gè)鍵值對(duì)的復(fù)合格式,支持文本和二進(jìn)制數(shù)據(jù)(如文件)。
核心特點(diǎn):
- 每個(gè)字段獨(dú)立成塊,包含字段名、內(nèi)容類型(如文本/文件)等元信息。
- 非 ASCII 字符(如中文、特殊符號(hào))無需手動(dòng)編碼,直接傳輸原始字節(jié)。
- 支持同時(shí)傳遞文本和文件(例如:上傳用戶頭像時(shí),同時(shí)傳遞用戶 ID 和昵稱)。
請(qǐng)求體示例(簡(jiǎn)化版):
--Boundary123456 // 分隔符(自動(dòng)生成) Content-Disposition: form-data; name="username" // 文本字段名 張三 // 字段值(中文無需編碼) --Boundary123456 Content-Disposition: form-data; name="avatar"; filename="head.jpg" // 文件字段 Content-Type: image/jpeg // 文件類型 [二進(jìn)制文件內(nèi)容] // 直接傳輸文件字節(jié) --Boundary123456-- // 結(jié)束符
2. x-www-form-urlencoded
本質(zhì):將鍵值對(duì)拼接為字符串(如 key1=value1&key2=value2),并對(duì)非 ASCII 字符進(jìn)行 URL 編碼。
核心特點(diǎn):
- 僅支持文本數(shù)據(jù),不支持文件傳輸(因編碼后為純文本,無法承載二進(jìn)制)。
- 數(shù)據(jù)體積小,編碼后為單一字符串,適合簡(jiǎn)單表單提交(如登錄、搜索框查詢)。
請(qǐng)求體示例:
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ù),需手動(dòng)指定 Content-Type。
核心特點(diǎn):
- 適合傳遞復(fù)雜結(jié)構(gòu)化數(shù)據(jù)(如 API 接口的 JSON 請(qǐng)求體)。
- Postman 會(huì)根據(jù)選擇的格式自動(dòng)設(shè)置
Content-Type(例如:選 JSON 則自動(dòng)添加application/json頭)。
常見場(chǎng)景:后端接口要求接收 JSON 格式的用戶信息(如 {"name":"張三","age":20})。
4. Binary
本質(zhì):二進(jìn)制數(shù)據(jù)流,對(duì)應(yīng) Content-Type: application/octet-stream。
核心特點(diǎn):
- 僅支持單個(gè)二進(jìn)制文件(如上傳壓縮包、圖片),無鍵值對(duì)概念。
- 直接傳輸文件原始字節(jié),適合純文件上傳場(chǎng)景(如“上傳附件”功能)。
二、重點(diǎn):Form Data 與 x-www-form-urlencoded 的核心區(qū)別
雖然兩者都以鍵值對(duì)形式傳輸數(shù)據(jù),但在編碼方式、支持類型、適用場(chǎng)景上有本質(zhì)區(qū)別,具體對(duì)比如下:
| 對(duì)比維度 | Form Data(multipart/form-data) | x-www-form-urlencoded |
|---|---|---|
| 編碼方式 | 用分隔符分割多個(gè)字段,每個(gè)字段獨(dú)立成塊 | 所有字段拼接為單一字符串,URL編碼 |
| 支持?jǐn)?shù)據(jù)類型 | 文本 + 二進(jìn)制文件(如圖片、文檔) | 僅支持文本(無法傳輸文件) |
| 非ASCII字符處理 | 直接傳輸原始字節(jié)(無需編碼) | 強(qiáng)制URL編碼(如中文→%E5%BC%A0…) |
| 數(shù)據(jù)體積 | 較大(含分隔符和元信息) | 較?。冏址?/td> |
| 適用場(chǎng)景 | 上傳文件、混合文本與二進(jìn)制數(shù)據(jù) | 簡(jiǎn)單表單提交(登錄、搜索、參數(shù)提交) |
| Spring Boot接收差異 | 支持 MultipartFile 接收文件 | 僅支持文本參數(shù),無法接收文件 |
一句話總結(jié):如果需要傳文件,必須用 Form Data;如果只是簡(jiǎn)單文本提交,x-www-form-urlencoded 更輕量。
三、Postman 中如何設(shè)置四種格式
1. Form Data 設(shè)置
步驟:Body → 選擇 form-data → 點(diǎn)擊“+”添加鍵值對(duì)。
- 文本參數(shù):默認(rèn)選“Text”,直接輸入鍵和值(如
username: 張三)。 - 文件參數(shù):選擇“File”,點(diǎn)擊“Select Files”上傳文件(如
avatar: head.jpg)。
注意:Postman 會(huì)自動(dòng)添加 Content-Type: multipart/form-data 及分隔符,無需手動(dòng)設(shè)置。
2. x-www-form-urlencoded 設(shè)置
步驟:Body → 選擇 x-www-form-urlencoded → 直接添加鍵值對(duì)(如 name: 張三、age: 20)。
注意:Postman 會(huì)自動(dòng)對(duì)非 ASCII 字符編碼(如“張三”→%E5%BC%A0%E4%B8%89),并設(shè)置 Content-Type: application/x-www-form-urlencoded。
3. Raw 設(shè)置
步驟:Body → 選擇 raw → 右側(cè)下拉框選格式(如 JSON)→ 輸入對(duì)應(yīng)格式內(nèi)容(如 {"name":"張三","age":20})。
注意:格式需與內(nèi)容匹配(如選 JSON 就必須輸入合法 JSON 字符串)。
4. Binary 設(shè)置
步驟:Body → 選擇 binary → 點(diǎn)擊“Select File”選擇單個(gè)二進(jìn)制文件(如 test.zip)。
注意:一次只能傳一個(gè)文件,無鍵名,僅傳輸文件字節(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
適用于純文本鍵值對(duì),直接用 @RequestParam 接收(與 Form Data 的文本參數(shù)接收方式一致)。
@RestController
public class UrlEncodedController {
@PostMapping("/submit")
public String handleUrlEncoded(
@RequestParam("name") String name, // 接收文本參數(shù)
@RequestParam("age") Integer age // 自動(dòng)轉(zhuǎn)換類型
) {
return "收到用戶:" + name + ",年齡:" + age;
}
}
3. 接收 Raw
適用于結(jié)構(gòu)化數(shù)據(jù)(如 JSON、XML),用 @RequestBody 綁定到對(duì)象或字符串。
// 定義接收J(rèn)SON的實(shí)體類
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 {
// 接收J(rèn)SON并自動(dòng)綁定到User對(duì)象
@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
適用于單個(gè)二進(jìn)制文件,用 MultipartFile 接收(與 Form Data 的文件接收方式相同)。
@RestController
public class BinaryController {
@PostMapping("/upload-file")
public String handleBinary(@RequestParam("file") MultipartFile file) {
return "收到二進(jìn)制文件:" + file.getOriginalFilename()
+ ",類型:" + file.getContentType();
}
}
五、總結(jié)
| 請(qǐng)求體格式 | 適用場(chǎng)景 | 核心特點(diǎn) | Spring Boot 接收方式 |
|---|---|---|---|
| Form Data | 文本+文件混合傳輸 | 支持二進(jìn)制,分隔符分隔 | @RequestParam(文本)+ MultipartFile(文件) |
| x-www-form-urlencoded | 純文本表單提交 | URL編碼,僅支持文本 | @RequestParam |
| Raw | 結(jié)構(gòu)化數(shù)據(jù)(JSON/XML等) | 純文本,需指定格式 | @RequestBody(綁定對(duì)象或字符串) |
| Binary | 單個(gè)二進(jìn)制文件 | 無鍵值對(duì),原始字節(jié)流 | MultipartFile |
掌握這四種格式的差異,尤其是 Form Data 與 x-www-form-urlencoded 的區(qū)別,能幫助我們?cè)谇昂蠖寺?lián)調(diào)中快速選擇合適的傳輸方式,避免“傳文件失敗”“參數(shù)亂碼”等常見問題。
到此這篇關(guān)于Postman中四種請(qǐng)求體格式用法全解析及SpringBoot接收指南的文章就介紹到這了,更多相關(guān)Postman請(qǐng)求體格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA 2020如何設(shè)置背景圖片的方法步驟
這篇文章主要介紹了IntelliJ IDEA 2020如何設(shè)置背景圖片的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
12種最常用的網(wǎng)頁編程語言簡(jiǎn)介(值得收藏)
隨著網(wǎng)站的越來越普及,與Web相關(guān)的開發(fā)技術(shù)持續(xù)熱門,從開始簡(jiǎn)單的html到復(fù)雜的web開發(fā)語言asp、asp.net、php、jsp等等,在此,我就借助SEO馬龍博客的平臺(tái)跟大家簡(jiǎn)單的介紹一下常見的12種網(wǎng)頁編程語言2017-01-01

