如何更改 API 平台中数组的查询格式?

问题描述

我使用的是最新版本的 API Platform,我想知道是否可以更改处理查询字符串中数组的方式。

认行为依赖于 PHP 处理数组的方式:

/customers?cars[]=audi&cars[]=mercedes&cars[]=bmw

根据 Swagger 文档:https://swagger.io/docs/specification/serialization/,它可以处理不同的方式:

/users?id=3,4,5
/users?id=3|4|5

我可以通过 API 平台使用这种格式吗?我在选项中没有找到任何东西,我想我可以使用事件来“欺骗”(DeserializeListener 也许)。

解决方法

Swagger 似乎支持这种输入格式:参数的样式名称是 deepObject

有很多方法可以支持查询中的多个输入,因为查询实际上是一个包含 var=value 的简单字符串,因此您可以想象任何您想要的东西,因为 var 可能会重复。 PHP 默认使用数组样式(或 deepObject)方法,这很好。

API 平台默认支持这种“多过滤器”查询:https://api-platform.com/docs/core/filters/#search-filter

如果您想使用以下方法:/users?id=3|4|5,您可以轻松定义 a custom filter,并直接使用请求来分解 id 参数并在内部完成您的查询。>