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



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

默认行为依赖于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-过滤

如果您想使用以下方法:/users?id=3|4|5,您可以轻松地定义一个自定义过滤器,并直接使用请求来分解id参数并在内部完成查询。