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

如何在OpenAPI中配置带数组符号的字符串数组参数且保留类型显示?

解决方案

可以实现,无需将schema改为type: string,但需要基于OpenAPI 3.x规范定义参数,并使用兼容的Swagger UI版本(3.x及以上)。

具体参数定义

parameters:
- name: "myParameter"
  in: query
  description: array of items
  required: true
  allowEmptyValue: false
  allowReserved: true  # 可选:允许参数值包含[]、"等保留字符,避免自动URL编码(根据后端需求调整)
  content:
    application/json:
      schema:
        type: array
        items:
          type: string
  example:
    - 'ABC'
    - 'DEF'

说明

  • 通过content.application/json指定参数的序列化格式为JSON,既保留了array[string]的类型定义,Swagger UI也会显示对应的数组输入组件;
  • 发送请求时,Swagger UI会将数组序列化为["ABC","DEF"]格式的字符串作为myParameter的参数值;
  • allowReserved: true用于控制是否允许参数值包含URL保留字符。如果后端接受未编码的参数值,加上该字段即可;如果后端要求URL编码,可移除该字段,此时参数值会被编码为%5B%22ABC%22%2C%22DEF%22%5D,后端仍可解析为JSON数组。

OpenAPI 2.0局限性

若仍使用OpenAPI 2.0规范,由于缺少content字段来指定媒体类型,无法在不将schema改为type: string的前提下实现该需求,建议升级到OpenAPI 3.x。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:47:12