我正在按照here的说明测试Silex REST服务,但也试图自动解码JSON数据,这也解释了in the manual,但不知怎的,它无法创建$ data参数。
在我的测试中,我用以下方式调用服务:
$data = file_get_contents(__DIR__.'/resources/billing-info.json');
$client->request('POST', '/users/test_user/bills',array(), array(), array('Content-Type' => 'application/json'), $data);
在Controller中我尝试以
的形式访问未编组的数据$app->post('/users/{username}/bills', function(Request $request, $username) use($app) {
try {
$myData = $request->data;
.....
} catch (Exception $e){
return $app->json(array('error'=>$e->getMessage()),$e->getCode());
}
});
但$ data数据不存在。我做错了什么?
答案 0 :(得分:1)
您需要将Content-Type
更改为CONTENT_TYPE
。如果查看Client类的source code,您会发现$server
参数需要与$ _SERVER超全局给出的键匹配。内容类型标头存储在CONTENT_TYPE
密钥中。
$client->request('POST', '/users/test_user/bills',array(), array(), array('CONTENT_TYPE' => 'application/json'), $data);
答案 1 :(得分:0)
查看Request-Object上的文档。我想而不是$myData = $request->data;
它必须是:
$myData = $request->getContent();