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

Laravel使用l5-swagger编写GET接口文档如何传递嵌套数组参数

问题原因

你的配置缺少OpenAPI 3.0针对query参数的序列化规则声明,默认序列化逻辑不会给嵌套数组增加索引,导致同名字段的传值被覆盖,无法解析为预期的对象数组结构。

  • OpenAPI默认的query参数序列化规则不支持复杂嵌套对象/数组的带索引传参,需要主动声明序列化风格
  • 你当前定义的query参数没有指定style和explode属性,Swagger UI会使用默认的form风格序列化参数,直接展开数组键名而不带索引
解决方案

给你的query参数增加序列化规则配置,使用OpenAPI 3.0专门支持嵌套对象传参的deepObject风格即可实现预期的带索引参数序列化:

  1. 修改控制器中的参数注解,添加style="deepObject"和explode=true配置:
*   @OA\Parameter(
 *     name="request_body",
 *     in="query",
 *     description="all request data which needed",
 *     required=false,
 *     style="deepObject",
 *     explode=true,
 *     @OA\Schema(
 *          ref="#/components/schemas/EstateListRequest"
 * )
  1. 重新生成swagger文档
    执行命令php artisan l5-swagger:generate重新生成api-docs.json,确认生成的参数配置中已经包含"style": "deepObject"和"explode": true属性。
  2. 验证效果
    重新打开Swagger UI填写参数发起请求,此时生成的URL会自动携带数组索引,PHP端可以正常解析为预期的多维数组结构。

补充说明

如果你的参数结构非常复杂,嵌套层级较多,更推荐使用POST请求通过JSON body传递参数,避免GET请求URL长度限制和序列化规则兼容问题。


内容的提问来源于stack exchange,提问作者shuba.ivan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:54:05