我使用的是最新版本的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
参数并在内部完成查询。