问题:
我正试图从Laravel 8中的控制器的text/plain POST请求获取内容/body。
文档或大量谷歌搜索都没有奏效。
我尝试过:
$request->input();
$request->all();
$request->json();
json_encode($request);
所有这些似乎都表明请求是完全空的。
上下文
这可能与解决方案无关,但可能有助于其他试图在谷歌上搜索此问题的人:我试图用控制器处理的请求是由客户端的navigator.sedBeacon发送的。请求主体实际上是字符串化的JSON,但sendBeacon不允许您发送内容类型为JSON的请求。Devtools将此请求的内容类型标头显示为"text/plain"。
我的答案:
使用$request->getContent()
获取文本/纯HTTP请求的内容
然后,如果您处于像我这样的情况,文本实际上是JSON,请使用json_decode($request->getContent(),true)
从内容中获得一个标准的PHP数组,您可以在控制器中使用该数组。
结果很简单,但文档中或任何在线搜索中都没有信息,所以我认为无论如何都值得发布到so
您可以像这样将数据发送为JSON,而不是
data = new Blob([JSON.stringify(data)], {type : 'application/json'})
navigator.sendBeacon('/your/route/here', data)