后端的请求体你选对了吗?

作为后端开发者,每天都要处理各种客户端请求。其中 rawform-data 这两种请求体的提交方式,看似简单却常常让人纠结。因为选择的类型不同,前端的封装值的方式就不同,那么它们到底有什么不同呢?

今儿个就好好的分析分析!!!


一、本质区别

  • FormData (表单数据): 就像传统的 HTML 表单提交。数据被编码成键值对 (key=value),并且用特定的分隔符(boundary)隔开。它最大的超能力是能高效上传文件。当你在网页上选了个文件点击上传时,多半就是它在幕后工作。

    • Content-Type: multipart/form-data; boundary=... (那个 boundary 是系统自动生成的一串随机字符,用来分隔不同字段)

    • 数据样子:

      css 复制代码
      张三
      --boundary123
      Content-Disposition: form-data; name="avatar"; filename="logo.png"
      Content-Type: image/png
      
      [这里是logo.png文件的二进制数据]
      --boundary123--
  • Raw (原始数据): 你可以把它想象成直接"塞"一段任意格式的原始数据到请求体里,没有预定义的键值结构。最常用的是 JSON (application/json),也可以是纯文本 (text/plain)、XML (application/xml) 甚至是一段自定义格式。

    • Content-Type: 明确指定你塞进去的是什么,比如 application/json, text/xml

    • 数据样子 (JSON):

      json 复制代码
      {
          "username": "张三",
          "age": 30,
          "hobbies": ["coding", "reading"]
      }

二、什么时候该用谁?

  1. 请用 FormData:

    • 上传文件/图片: 这是它的主场!无论是单文件还是多文件,配合 <input type="file">FormData API 轻松搞定。
    • 传统表单提交: 需要兼容老系统或者就是简单的键值对提交(且可能包含文件)时。
  2. 请用 Raw (通常是 JSON):

    • API 交互 (RESTful API): 现代 Web API 和移动端 API 通信的绝对主力。结构清晰、灵活表达复杂嵌套数据。
    • 提交结构化数据: 当你需要传递一个对象、数组等复杂数据结构时,JSON 的层次化表示比扁平的键值对强大得多。
    • 需要明确数据类型: JSON 天生区分字符串、数字、布尔值、数组、对象、null,后端解析更精准。

三、总结

特性 FormData (multipart/form-data) Raw (常用 application/json)
主要用途 文件上传、传统表单提交 API 交互 、传递结构化数据
数据格式 键值对 + 分隔符 (含文件二进制) 原始文本 (常用 JSON, XML, 纯文本等)
Content-Type multipart/form-data application/json, text/plain
数据结构灵活性 扁平 (键值对),处理复杂结构较麻烦 (JSON 天然支持对象、数组嵌套)
数据大小效率 有 boundary 开销,传大文件效率高 纯文本数据更紧凑,文件处理复杂

简单口诀:

  • 要传文件? 无脑选 FormData (multipart/form-data)。
  • 做 API (尤其是复杂数据)? 首选 Raw JSON (application/json)。
  • 普通表单没文件? FormData (application/x-www-form-urlencoded 更轻量,都可以,看你们则呢么选择或者约定。
相关推荐
考虑考虑2 分钟前
Postgerssql格式化时间
数据库·后端·postgresql
Chan1615 分钟前
【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据
java·spring boot·后端·sql·spring·intellij-idea·echarts
库库林_沙琪马33 分钟前
REST接口幂等设计深度解析
spring boot·后端
IT_陈寒37 分钟前
Redis性能提升50%的7个关键优化策略,90%开发者都不知道第5点!
前端·人工智能·后端
智商偏低41 分钟前
ASP.NET Core 身份验证概述
后端·asp.net
冷冷的菜哥42 分钟前
ASP.NET Core使用MailKit发送邮件
后端·c#·asp.net·发送邮件·mailkit
canonical_entropy1 小时前
XDef:一种面向演化的元模型及其构造哲学
后端
小林coding1 小时前
再也不怕面试了!程序员 AI 面试练习神器终于上线了
前端·后端·面试
lypzcgf1 小时前
Coze源码分析-资源库-删除插件-后端源码-错误处理与总结
人工智能·后端·go·coze·coze源码分析·ai应用平台·agent平台
文心快码BaiduComate1 小时前
WAVE SUMMIT深度学习开发者大会2025举行 文心大模型X1.1发布
前端·后端·程序员