我正在使用Symfony和API平台,我想filter on nested properties。
虽然看起来很简单,但是我去:
http://localhost:8000/api/offers?product.color=red
请求被重定向到:
http://localhost:8000/api/offers?product_color=red
。
点被下划线代替。
我不完全理解为什么会发生这种情况,但是关于此行为有一个closed issue:
关闭此代码,因为这只是PHP解析HTTP请求和我们将无法解决该问题。
如何过滤嵌套属性?
.
)替换为下划线(_
)。内部,PHP会转换包含句点的查询参数名称,因为这些对于变量名称而言不是有效的字符。这样做是为了保持与register_globals
处于打开状态的安装(今天几乎无处)的兼容性。但这不会导致重定向。
如果要重定向,您可以检查浏览器的开发人员控制台以查看您所获得的响应头的确切类型。例如:
在这种情况下,请注意Status code: 302
。如果您要重定向,则应该收到302
或301
。
但是如果有任何重定向,则由于您设置的某些规则,它一定是在Web服务器级别上发生的。
在运行Api-Plaform的漂亮的vainilla设备上,我可以毫无问题地请求类似http://localhost:9097/api/boost_leads?channel.partner=18695
的网址(注意channel.partner
),并正确获得响应(状态为200
的代码,无重定向) ):