当前位置:

首页 > 编程开发 > Postman中四种请求体格式用法全解析及SpringBoot接收指南

Postman中四种请求体格式用法全解析及SpringBoot接收指南

本文目录

    Postman提供四种请求体格式:FormData支持文本与文件混合传输;x-www-form-urlencoded仅文本需URL编码;Raw适合JSON等结构化数据;Binary用于单个二进制文件。SpringBoot通过@RequestParam、@RequestPart等注解分别处理。

    在接口开发中,请求体格式的选择直接影响数据传输的效率和正确性。Postman 作为主流的接口调试工具,提供了 Form Data、x-www-form-urlencoded、Raw、Binary 四种常用请求体格式。本文将详细解析这四种格式的区别,重点对比 Form Data 与 x-www-form-urlencoded,并结合 Spring Boot 示例说明如何正确接收参数。

    一、四种请求体格式的核心区别

    Postman 的 Body 选项中,四种格式的设计初衷和适用场景差异显著,具体如下:

    1. Form Data(multipart/form-data)

    本质:通过“分隔符(boundary)”分割多个键值对的复合格式,支持文本和二进制数据(如文件)。

    核心特点:

    • 每个字段独立成块,包含字段名、内容类型(如文本/文件)等元信息。
    • 非 ASCII 字符(如中文、特殊符号)无需手动编码,直接传输原始字节。
    • 支持同时传递文本和文件(例如:上传用户头像时,同时传递用户 ID 和昵称)。

    请求体示例(简化版):

    --Boundary123456  // 分隔符(自动生成)
    Content-Disposition: form-data; name="username"  // 文本字段名
    张三  // 字段值(中文无需编码)
    --Boundary123456
    Content-Disposition: form-data; name="a vatar"; filename="head.jpg"  // 文件字段
    Content-Type: image/jpeg  // 文件类型
    [二进制文件内容]  // 直接传输文件字节
    --Boundary123456--  // 结束符

    2. x-www-form-urlencoded

    本质:将键值对拼接为字符串(如 key1=value1&key2=value2),并对非 ASCII 字符进行 URL 编码。

    核心特点:

    • 仅支持文本数据,不支持文件传输(因编码后为纯文本,无法承载二进制)。
    • 数据体积小,编码后为单一字符串,适合简单表单提交(如登录、搜索框查询)。

    请求体示例:

    username=%E5%BC%A0%E4%B8%89&age=20  // "张三"被URL编码为%E5%BC%A0%E4%B8%89

    3. Raw

    本质:纯文本格式,支持 JSON、XML、HTML 等结构化数据,需手动指定 Content-Type。

    核心特点:

    • 适合传递复杂结构化数据(如 API 接口的 JSON 请求体)。
    • Postman 会根据选择的格式自动设置 Content-Type(例如:选 JSON 则自动添加 application/json 头)。

    常见场景:后端接口要求接收 JSON 格式的用户信息(如 {"name":"张三","age":20})。

    4. Binary

    本质:二进制数据流,对应 Content-Type: application/octet-stream。

    核心特点:

    • 仅支持单个二进制文件(如上传压缩包、图片),无键值对概念。
    • 直接传输文件原始字节,适合纯文件上传场景(如“上传附件”功能)。

    二、重点:Form Data 与 x-www-form-urlencoded 的核心区别

    虽然两者都以键值对形式传输数据,但在编码方式、支持类型、适用场景上有本质区别,具体对比如下:

    对比维度 Form Data(multipart/form-data) x-www-form-urlencoded
    编码方式 用分隔符分割多个字段,每个字段独立成块 所有字段拼接为单一字符串,URL编码
    支持数据类型 文本 + 二进制文件(如图片、文档) 仅支持文本(无法传输文件)
    非ASCII字符处理 直接传输原始字节(无需编码) 强制URL编码(如中文→%E5%BC%A0…)
    数据体积 较大(含分隔符和元信息) 较小(纯字符串)
    适用场景 上传文件、混合文本与二进制数据 简单表单提交(登录、搜索、参数提交)
    Spring Boot接收差异 支持 MultipartFile 接收文件 仅支持文本参数,无法接收文件

    一句话总结:如果需要传文件,必须用 Form Data;如果只是简单文本提交,x-www-form-urlencoded 更轻量。

    三、Postman 中如何设置四种格式

    1. Form Data 设置

    步骤:Body → 选择 form-data → 点击“+”添加键值对。

    • 文本参数:默认选“Text”,直接输入键和值(如 username: 张三)。
    • 文件参数:选择“File”,点击“Select Files”上传文件(如 a vatar: head.jpg)。

    注意:Postman 会自动添加 Content-Type: multipart/form-data 及分隔符,无需手动设置。

    2. x-www-form-urlencoded 设置

    步骤:Body → 选择 x-www-form-urlencoded → 直接添加键值对(如 name: 张三、age: 20)。

    注意:Postman 会自动对非 ASCII 字符编码(如“张三”→%E5%BC%A0%E4%B8%89),并设置 Content-Type: application/x-www-form-urlencoded。

    3. Raw 设置

    步骤:Body → 选择 raw → 右侧下拉框选格式(如 JSON)→ 输入对应格式内容(如 {"name":"张三","age":20})。

    注意:格式需与内容匹配(如选 JSON 就必须输入合法 JSON 字符串)。

    4. Binary 设置

    步骤:Body → 选择 binary → 点击“Select File”选择单个二进制文件(如 test.zip)。

    注意:一次只能传一个文件,无键名,仅传输文件字节流。

    四、Spring Boot 中如何接收四种格式的参数

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

    适用于文本+文件混合传输,用 @RequestParam 接收文本,MultipartFile 接收文件。

    @RestController
    public class FormDataController {
        // 接收文本+文件
        @PostMapping("/upload")
        public String handleFormData(
                @RequestParam("username") String username,  // 文本参数
                @RequestParam("a vatar") MultipartFile a vatar  // 文件参数
        ) {
            String filename = a vatar.getOriginalFilename(); // 获取文件名
            long fileSize = a vatar.getSize(); // 获取文件大小
            return "收到用户:" + username + ",上传文件:" + filename + "(大小:" + fileSize + "字节)";
        }
    }

    2. 接收 x-www-form-urlencoded

    适用于纯文本键值对,直接用 @RequestParam 接收(与 Form Data 的文本参数接收方式一致)。

    @RestController
    public class UrlEncodedController {
        @PostMapping("/submit")
        public String handleUrlEncoded(
                @RequestParam("name") String name,  // 接收文本参数
                @RequestParam("age") Integer age    // 自动转换类型
        ) {
            return "收到用户:" + name + ",年龄:" + age;
        }
    }

    3. 接收 Raw

    适用于结构化数据(如 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内容:" + 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();
        }
    }

    五、总结

    请求体格式 适用场景 核心特点 Spring Boot 接收方式
    Form Data 文本+文件混合传输 支持二进制,分隔符分隔 @RequestParam(文本)+ MultipartFile(文件)
    x-www-form-urlencoded 纯文本表单提交 URL编码,仅支持文本 @RequestParam
    Raw 结构化数据(JSON/XML等) 纯文本,需指定格式 @RequestBody(绑定对象或字符串)
    Binary 单个二进制文件 无键值对,原始字节流 MultipartFile

    掌握这四种格式的差异,尤其是 Form Data 与 x-www-form-urlencoded 的区别,能帮助我们在前后端联调中快速选择合适的传输方式,避免“传文件失败”“参数乱码”等常见问题。

    本文内容来源于网友投稿,如有侵权请联系删除。
    作者最新文章
    编程开发
    相关文章 更多
    PHP递归性能优化技巧与迭代替代方案
    PHP递归性能优化技巧与迭代替代方案

    解析PHP递归函数在树形数据处理中的性能瓶颈,提供预加载数据消除I/O、使用显式栈替代深层递归的实战方案,帮助开发者在代码可读性与执行效率间做出合理取舍。

    Java测试中怎么使用Mockito模拟依赖对象
    Java测试中怎么使用Mockito模拟依赖对象

    详细讲解在Java单元测试中如何使用Mockito模拟依赖对象,包括引入依赖、创建Mock、打桩返回值、行为验证以及Mock与Spy的核心差异和常见陷阱排查。

    链表删除节点的时间复杂度是多少及其详细分析
    链表删除节点的时间复杂度是多少及其详细分析

    详细分析链表删除节点的时间复杂度,深入探讨单链表与双向链表在不同已知前提下的查找与删除开销,并结合完整代码与清晰图解进行对比总结。

    codex如何配置模型参数及文件设置教程
    codex如何配置模型参数及文件设置教程

    想知道如何让AI写出的代码更贴合你的习惯?本文手把手教你在VS Code中调整Codex相关模型参数,通过修改配置文件优化温度值和令牌限制,解决代码建议不准确或响应慢的问题。

    Claude Code AI编程工具实力揭秘与编程助手实测
    Claude Code AI编程工具实力揭秘与编程助手实测

    通过实测展示Claude Code在终端中如何理解自然语言指令、自动修改代码文件并处理复杂编程任务,帮助开发者评估其实际辅助能力。

    winforms教程自学入门与基础开发步骤详解
    winforms教程自学入门与基础开发步骤详解

    本教程详细讲解如何使用Visual Studio创建WinForms项目,通过添加按钮和标签控件并编写点击事件代码,实现一个基础的计数器功能,适合C#初学者快速上手Windows窗体应用开发。

    Cursor自动补全设置教程教你快速开启代码补全功能
    Cursor自动补全设置教程教你快速开启代码补全功能

    详解Cursor编辑器中自动补全功能的开启与优化设置,涵盖Tab触发机制、上下文窗口调整及模型切换,帮助开发者解决补全延迟、干扰大等问题,提升编码流畅度。

    pandas的数据格式怎么转换和设置方法教程
    pandas的数据格式怎么转换和设置方法教程

    详解Pandas中数据格式转换的核心方法,包括astype强制转换、to_numeric容错处理及日期解析技巧,解决常见类型错误并提升数据处理效率。

    VS Code中文设置方法 简体语言包安装与切换教程
    VS Code中文设置方法 简体语言包安装与切换教程

    详细介绍在Visual Studio Code中安装Chinese (Simplified)语言包的方法,包括通过扩展市场搜索、安装及自动重启切换至简体中文界面的完整步骤,帮助开发者快速将编辑器本地化。

    cursor安装过程无法更改安装位置的解决方法
    cursor安装过程无法更改安装位置的解决方法

    针对Cursor安装包默认锁定C盘且无路径选择界面的问题,提供通过手动移动文件并创建目录联结(Symbolic Link)的解决方案,实现将软件安装在其他磁盘分区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件
    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

    灵活计算器
    灵活计算器
    macOS/iOS/Android

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    WINDOWS 更多
    3dmax(3ds max)
    3dmax(3ds max)
    Windows

    Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。