【发布时间】:2016-05-11 23:05:53
【问题描述】:
我正在使用 Slim Framework v3,但在访问从浏览器客户端发送到我的 REST API 的 JSON 数据时遇到了一些问题。
目前我正在使用$request->getParsedBody(); 访问数据,但它返回的只是一个字符串,我不想解析它,因为我认为这个问题有更好的解决方案。
这是客户端发送的内容:
$data = array ();
$data ["key1"] = "value1";
$data ["key2"] = "value2";
$data ["key3"] = "value3";
$data = json_encode ( $data );
这会产生{"key1":"value1","key2":"value2","key3":"value3"}
服务器上发生了什么?
$app->post ( '/somePath', function ($request, $response) {
$body = $request->getParsedBody();
var_dump($body);
return $response;
});
var_dump(); 正在产生以下输出:
string(86) "array(1) {
["{"key1":"value1","key2":"value2","key3":"value3"}"]=>
string(0) ""
}
"
如您所见,$request->getParsedBody(); 正在返回一个字符串。
有没有更好的方法来做到这一点?
我已经尝试使用$request->getBody();,但它返回一个 Slim\Http\RequestBody 类型的对象,并且只有受保护的变量。我还没有找到任何函数来访问这些受保护的变量。
请记住,我使用的是 Slim v3,与 v2 相比,它们改变了很多东西。
如果没有更好的方法,你有没有建议如何以最好的方式解析它?
【问题讨论】:
-
您需要使用 Content-Type: application/json header 发布您的数据。