【发布时间】:2016-09-14 22:57:47
【问题描述】:
我正在努力在我的 Lumen API 中创建有效的 PUT 路由。我的请求到达了正确的路线,但我无法通过$request->all() 访问任何值。
我发现 PHP 需要读取 php://input 流来获取 PUT 正文。这是在Symfony\Component\HttpFoundation\Request 的getContent() 函数中完成的。但是,这个函数被多次调用,由于输入缓冲区在读取时被清空,所以当我需要它时数据不存在。
我还发现,当我将 Content-Type 标头设置为 text/plain 时,我可以成功打印 $request->json(),但是当我将其设置为 application/json 时,对象为空。
有什么想法吗?
PS:我知道对于 HTML 请求,您应该添加 _method 参数,但由于我不是通过 HTML 执行请求,因此不需要该参数。
编辑:
我的路线:
$app->put('settings', 'SettingController@update');
我的控制器:
class SettingController extends Controller
{
public function update(Request $request)
{
print_r($request->all());
}
}
【问题讨论】:
-
你能展示你的代码吗?
-
哪一部分?在我的 routes.php 中:
$api->put('settings', 'SettingController@update');。在更新方法中,我只是简单地做print_r($request->all()),它是空的。顺便说一句,我正在使用 dingo 包。 -
如果您正在使用,请显示您的路由和控制器。
-
我编辑了我的原始帖子