получение и удаление работают, но другие методы не работают: restful server от phill

#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;
    }