我正在向我创建的API端点发送PUT
请求。使用jwt,我能够成功注册并获得令牌。
使用Postman,我的请求完美无缺。
我在我的应用程序中使用Guzzle发送PUT
请求。这就是它的样子:
$client = new \Guzzle\Http\Client('http://foo.mysite.dev/api/');
$uri = 'user/123';
$post_data = array(
'token' => eyJ0eXAiOiJKV1QiLCJhbGc..., // whole token
'name' => 'Name',
'email' => name@email.com,
'suspended' => 1,
);
$data = json_encode($post_data);
$request = $client->put($uri, array(
'content-type' => 'application/json'
));
$request->setBody($data);
$response = $request->send();
$json = $response->json();
} catch (\Exception $e) {
error_log('Error: Could not update user:');
error_log($e->getResponse()->getBody());
}
当我记录$data
变量以查看它的外观时,这就是返回的内容。
error_log(print_r($data, true));
{"token":"eyJ0eXAiOiJKV1QiL...","name":"Name","email":"name@email.com","suspended":1}
Error: Could not suspend user:
{"error":"token_not_provided"}
似乎所有数据都正确填充,我不确定为什么系统没有找到令牌。运行"相同"通过Postman查询(作为PUT
)以及相同的参数,效果很好。
非常感谢任何建议!
答案 0 :(得分:0)
令牌应该在授权标头中设置,而不是作为后期数据参数
$request->addHeader('Authorization', 'Basic eyJ0eXAiOiJKV1QiL...');