You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman传RAW JSON到multipart/form-data接口返回400问题咨询

错误根本原因

返回400 Bad Request的核心原因是请求编码格式和后端绑定要求不匹配:

  • 后端接口标记了[FromForm]特性,要求请求必须使用multipart/form-data(适配文件上传场景)或application/x-www-form-urlencoded编码,模型绑定器才能正确解析参数
  • Postman中使用RAW JSON传参时,会自动将请求头Content-Type设置为application/json,模型绑定器无法从JSON请求体中解析Form格式的参数,直接触发绑定失败返回400。
可行解决方法

根据是否需要保留文件上传能力,二选一即可:

方案1:保留[FromForm]特性(适配文件上传需求,推荐)

不需要修改后端代码,仅调整Postman配置即可实现公共参数一次修改全局生效:

  • 基础用法:把所有公共非文件参数直接定义为集合变量,比如业务参数title对应变量{{create_title}}、bizType对应{{create_bizType}}。3个调用该接口的请求都选择form-data格式,公共参数直接引用对应集合变量,文件上传字段在各请求内单独配置即可。后续参数变更只需要修改集合变量值,所有引用的请求会自动同步。
  • 进阶批量用法(不想逐个定义表单变量时用):
    1. 把所有公共参数按JSON格式存在集合变量common_form_data中,示例值:
    {
      "title": "测试单据",
      "bizType": 3,
      "remark": "公共测试参数"
    }
    
    1. 在集合层级的Pre-request Script中添加以下脚本,请求发送前会自动把JSON解析为表单参数追加到请求体:
    const commonParams = JSON.parse(pm.collectionVariables.get("common_form_data"));
    Object.entries(commonParams).forEach(([key, val]) => {
      pm.request.body.formdata.add({
        key: key,
        value: String(val)
      })
    })
    
    1. 每个接口请求仅需要单独配置文件上传字段,不需要重复填写公共表单参数,后续修改公共参数仅需调整common_form_data变量值即可。

方案2:调整后端绑定配置(无文件上传场景可选)

如果该接口后续不需要处理文件上传,直接移除接口参数上的[FromForm]特性即可,.NET 6 Web API会默认使用application/json格式解析请求体,此时原有RAW JSON存储为集合变量的写法可以正常工作,不会返回400错误。

注意:只要接口需要接收上传文件,就不能使用这个方案,文件数据无法通过纯JSON格式传输。

内容的提问来源于stack exchange,提问作者John Sari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:09:10