嵌套属性过滤:点到下划线重定向

问题描述 投票:4回答:1

我正在使用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请求和我们将无法解决该问题。

如何过滤嵌套属性?

symfony query-string api-platform.com symfony-http-foundation
1个回答
0
投票

PHP或Symfony(也不是API平台)都不会执行重定向,将所有句点(.)替换为下划线(_)。

内部,PHP会转换包含句点的查询参数名称,因为这些对于变量名称而言不是有效的字符。这样做是为了保持与register_globals处于打开状态的安装(今天几乎无处)的兼容性。但这不会导致重定向

如果要重定向,您可以检查浏览器的开发人员控制台以查看您所获得的响应头的确切类型。例如:

enter image description here

在这种情况下,请注意Status code: 302。如果您要重定向,则应该收到302301

但是如果有任何重定向,则由于您设置的某些规则,它一定是在Web服务器级别上发生的。

在运行Api-Plaform的漂亮的vainilla设备上,我可以毫无问题地请求类似http://localhost:9097/api/boost_leads?channel.partner=18695的网址(注意channel.partner),并正确获得响应(状态为200的代码,无重定向) ):

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.