#php #api #rest #curl #codeigniter-restserver
#php #API #rest #curl #codeigniter-restserver
Вопрос:
я пытаюсь внедрить rest-сервер Фила Стерджена и узнаю об аутентификации с помощью ключа api. Я использую клиент rest и библиотеку curl от, опять же, Фила Стерджена. программа отлично работает с запросом get и delete, но при попытке post и другого оставшегося метода выдает ответ «не авторизован». И многое другое, когда я пытаюсь использовать дайджест-аутентификацию (здесь я использую chrome advanced rest client для тестирования), имя пользователя и пароль не совпадают, и браузер постоянно показывает форму входа. вот мой тестер curl
function rest_client_example($id)
{
$this->load->library('rest', array(
'server' => 'http://localhost:81/restserver/index.php/api/example/',
'http_user' => 'admin',
'http_pass' => '1234',
'http_auth' => 'digest', // or 'digest'
));
$user = $this->rest->put('user', array('id' => $id, 'X-API-KEY' => 'aa72dfaa70d6aa6c2c8d26b82c08d26db979f2f0'), 'application/json');
print_r($user);exit;
echo $user->name;
}
и я использую класс example по умолчанию, включенный в этот пакет rest server
Ответ №1:
Передайте ключ API в header
function rest_client_example($id)
{
$this->load->library('rest', array(
'server' => 'http://localhost:81/restserver/index.php/api/example/',
'http_user' => 'admin',
'http_pass' => '1234',
'http_auth' => 'digest', // or 'digest',
'api_key' => 'aa72dfaa70d6aa6c2c8d26b82c08d26db979f2f0',
'api_name' => 'X-API-KEY',
));
$user = $this->rest->put('user', array('id' => $id), 'application/json');
print_r($user);exit;
echo $user->name;
}