【问题标题】:Silex: put and post handled differentlySilex:put 和 post 处理方式不同
【发布时间】:2014-03-20 10:27:12
【问题描述】:

我正在使用 Silex 创建一个 REST API。我创建了一个更新方法,它接受资源 id 和请求数据并更新匹配的资源。

一开始我是用路由测试的:

$api->post('/websites/{id}', "websites.controller:update");

这工作正常并按预期更新了资源。

然后我将路线更改为:

$api->put('/websites/{id}', "websites.controller:update");

控制器的更新方法根本没有改变,但是请求现在失败了。请求数据似乎是空的,正在做:

$request->request->get('key');

在使用 POST 时没有返回任何内容。

任何想法为什么实施可能会有所不同?

【问题讨论】:

    标签: php rest symfony silex


    【解决方案1】:

    不知道为什么实现会有所不同。如果您知道您想要的密钥,您可以随时为任何方法使用$request->get('KeyName')

    【讨论】:

    • 错了。 Silex 将 GET 存储在 $request->query
    • 不,如果要获取PUT,则需要使用$request->get('key'),因为$request->query->get('key')仅用于GET方法。看Request文档
    • 警告 - 为了让 Silex/Symfony 使用 $request->get() 方法序列化请求数据,您需要确保您的调用将 Content-Type 标头设置为 application/x-www-form-urlencoded
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多