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

在API Platform中配置OpenApi动态数组查询参数求助

解决API Platform中OpenAPI数组查询参数动态添加的问题

你的问题出在数组参数的items配置逻辑错误,且缺少数组参数的传递格式定义,导致Swagger UI无法生成支持动态添加值的输入控件。以下是具体修正方案:

错误原因分析

你在items里嵌套了properties,但这个结构仅用于定义对象类型的数组元素;而你需要的是字符串类型的数组元素,直接指定type即可。另外,OpenAPI需要明确数组参数的传递风格,才能让Swagger UI支持动态添加值的交互。

修正后的代码

基于API Platform默认使用的OpenAPI 3.x规范,修正后的配置代码如下:

new Get(
    uriTemplate: '/v1/examples/query',
    openapi: new Model\Operation(
        summary: 'Query example',
        parameters: [
            [
                'name' => 'array',
                'in' => 'query',
                'schema' => [
                    'type' => 'array',
                    'items' => [
                        'type' => 'string' // 直接指定数组元素类型,无需嵌套properties
                    ]
                ],
                'description' => '字符串类型的数组参数',
                'style' => 'form', // 指定form风格的参数传递格式
                'explode' => true, // 启用拆分传递,生成array=val1&array=val2格式
                'allowReserved' => false
            ],
            [
                'name' => 'property',
                'in' => 'query',
                'schema' => [
                    'type' => 'string'
                ],
                'description' => '字符串参数'
            ]
        ]
    ),
    name: 'query_endpoint'
),

关键配置说明

  • schema字段替代直接写type:OpenAPI 3.x要求参数的类型定义放在schema字段下,而非直接在参数根节点写type(后者是OpenAPI 2.x的写法)。
  • items的正确写法:对于字符串、数字这类基本类型的数组元素,直接在items中声明type即可,properties仅用于定义对象的属性结构。
  • style与explode的作用:style: form配合explode: true会让Swagger UI生成可动态添加多个值的输入框,参数传递格式为array=value1&array=value2,这是最通用的数组查询参数格式。

配置完成后,Swagger UI中的array参数将显示为支持动态添加值的交互控件,符合你的预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:50:04