将请求正文 NULL 放在 Slim 上



我想我已经阅读了关于在Slim框架(在Windows XAMPP上运行(上获取PUT请求正文的问题的所有答案。似乎没有一个解决方案对我有用,所以也许我缺少另一个警告。

我的 php 代码如下:

require 'Slim/Slim.php';
SlimSlim::registerAutoloader();
$app = new SlimSlim();
$app->run();
$app->put('/calendar/update/:id', function($id) use ($app){
    $ev = json_decode($app->request()->getBody());
    echo var_dump($ev);  // NULL
}

我一直在 PHPStorm 的 REST 测试器中测试它,使用参数和查询字符串 - 无济于事。我也尝试在我的 ajax 调用中显式设置contentType: application/x-www-form-urlencoded

似乎在这里迷路了...

$app->contentType() 方法仅影响从 Slim 发送回 HTTP 客户端的 HTTP 响应。我相信 Mika 建议您将 HTTP 请求的 Content-Type 标头更改为 application/json 如果您打算解析请求正文,如上面的示例中所示。

此外,您应该仅在定义路由后调用$app->run()。上面的示例在路由之前调用$app->run()

希望这有帮助!

-乔希

有类似的问题。如果您使用表单发送放置请求。将此隐藏字段添加到表单中。另外不要忘记移动$app-run((;到最后一行。

<input type="hidden" name="_METHOD" value="PUT"/>

http://docs.slimframework.com/routing/put/

最新更新