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

OpenAPI 3.0.3中multipart/form-data数组参数格式异常求助

解决multipart/form-data数组元素被合并的问题

你遇到的问题是multipart/form-data请求里的数组被解析成了单个逗号分隔的字符串,核心原因是OpenAPI默认的数组序列化方式和服务端期望的不匹配。按以下步骤修改即可:

1. 调整OpenAPI的字段定义

  • 把字段名从'genreIds[]'和'languageIds[]'改成genreIds和languageIds,方括号后缀没必要,反而会干扰解析。
  • 给数组字段添加style: form和explode: true参数,明确告诉OpenAPI要生成重复的字段名(而非逗号分隔),这样服务端就能识别每个元素。
  • 简化genreIds的items定义,oneOf在这里是多余的,直接指定类型为string即可。

修正后的请求体代码:

requestBody: {
  content: {
    'multipart/form-data': {
      schema: {
        type: 'object',
        properties: {
          email: { type: 'string' },
          password: { type: 'string' },
          confirmPassword: { type: 'string' },
          fullName: { type: 'string' },
          avatar: { type: 'string', format: 'binary' },
          genreIds: {
            type: 'array',
            items: { type: 'string' },
            style: 'form',
            explode: true
          },
          languageIds: {
            type: 'array',
            items: { type: 'string', default: '' },
            style: 'form',
            explode: true
          },
        },
      },
    },
  },
}

2. 确认服务端解析配置

如果服务端用的是Express+Multer这类工具,默认应该支持解析重复字段名的数组,但要确保没有额外配置把数组强制合并成字符串。比如Multer不需要特殊配置,就能把genreIds=1234&genreIds=55466解析成['1234', '55466']。

这样修改后,请求发送时会生成多个同名字段,服务端就能正确解析成独立的数组元素,得到你期望的结果。

内容的提问来源于stack exchange,提问作者Nhan Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:42:19