sancho2804 / rest_client
PHP client for REST API services
Requires
- php: ^7.0
- ext-curl: *
- ext-json: *
This package is auto-updated.
Last update: 2025-06-21 19:55:40 UTC
README
Многие сервисы с которыми приходится иметь дело, имеют на борту REST API. Это очень удобно для разработчиков. Для работы с апи необходимо разрабатывать модуль для решения конкретных задач. Я предлагаю упростить задачу используя "карты REST API сервисов". Такие карты оформляются в формате JSON. Но класс можно использовать и для обращения к методам сервиса и напрямую.
Стартуем , я начну стрелять:
Устанавливаем через composer:
composer require sancho2804/rest_client
Используя автозагрузку по namespace создаем объект класса:
include_once 'vendor/autoload.php'; use sancho2804\rest_client\main; $yandex_disk=new main('https://cloud-api.yandex.net:443/v1/','OAuth',$token);
Первый параметр ссылка на REST API нужного вам сервиса. Именно к этой ссылке будут добавляться указываемые в дальнейшем пути. Если авторизация для сервиса не требуется, то 2 и 3 параметр можно опустить. 2 параметр обычно это любая строка либо Bearer
Доступные методы:
rest_client::set_service($service_name)
Подгружает карту сервиса по ее имени. Расширение указывать не нужно. Карты хранятся в src/maps/< service_name >.json
Аргументы:
- имя сервиса/имя файла карты
Возвращаемые значения: void
$yandex_disk->set_service('yandex_disk');
rest_client::exec($alias, $post_fields, [$arg1, ....])
Вызывает метод сервиса описанный в карте.
Аргументы:
- $alias - алиас по которому вызывается метод сервиса
- $post_fields - по умолчанию null. Если передать массив, то он передастся в POST заголовок
- любое кол-во аргументов необходимых для выполнения запроса к методу сервиса
Возвращаемые значения: по умолчанию - результат ответа в виде массива. Если $rest_client::$result_is_json установлен в false, то сырой результат.
$yandex_disk->exec('dir_info',null,'/');
rest_client::${method_name}($post_fields, [$arg1, ....])
Вызов метода сервиса как метод класса.
Аргументы:
- $post_fields - по умолчанию null. Если передать массив, то он передастся в POST заголовок
- любое кол-во аргументов необходимых для выполнения запроса к методу сервиса
Возвращаемые значения: по умолчанию - результат ответа в виде массива. Если rest_client::$result_is_json установлен в false, то сырой результат.
$result=$yandex_disk->dir_info(null, '/'); //Идентично $yandex_disk->exec('dir_info',null,'/');
rest_client::get($path, $post_fields)
Делает запрос к методу сервиса по HTTP методу GET.
Аргументы:
- $path - относительный путь до метода
- $post_fields - по умолчанию null. Если передать массив, то он передастся в POST заголовок
Возвращаемые значения: по умолчанию - результат ответа в виде массива. Если rest_client::$result_is_json установлен в false, то сырой результат.
$yandex_disk->get('disk/resources?path=/');
rest_client::save($path, $post_fields)
Делает запрос к методу сервиса по HTTP методу POST.
Аргументы: такие же как и в методе get
Возвращаемы значения: такие же как и в методе get
$yandex_disk->save('disk/resources/copy?from=/file1.php&path=/file2.php');
rest_client::delete($path, $post_fields)
Делает запрос к методу сервиса по HTTP методу DELETE.
Аргументы: такие же как и в методе get
Возвращаемы значения: такие же как и в методе get
$yandex_disk->delete('disk/resources?path=/file2.php');
rest_client::update($path, $post_fields)
Делает запрос к методу сервиса по HTTP методу PATCH.
Аргументы: такие же как и в методе get
Возвращаемы значения: такие же как и в методе get
$yandex_disk->update('disk/resources?path=/file2.php&body=...');
rest_client::create($path, $post_fields)
Делает запрос к методу сервиса по HTTP методу PUT.
Аргументы: такие же как и в методе get
Возвращаемы значения: такие же как и в методе get
$yandex_disk->create('disk/resources/publish?path=/file2.php');
rest_client::options($path, $post_fields)
Делает запрос к методу сервиса по HTTP методу OPTIONS.
Аргументы: такие же как и в методе get
Возвращаемы значения: такие же как и в методе get
//Пока не встречал его в работе, но он как суслик
Формат JSON-карты:
{ "dir_info":{ "method":"GET", "uri":"disk/resources?path={::}&offset={::}&limit={::}&sort={::}&fields={::}", "require":[0] }, ... }
- dir_info - алиас по которому происходит обращение к сервису
- method - метод HTTP. GET, POST, DELETE, PATCH, PUT, OPTIONS
- uri - путь до метода REST API. Конструкции вида {::} будут заменены на аргументы из метода rest_client::exec в том порядке, в котором они передаются
- require - Указываются номера конструкции {::}, которые нужно обязательно передать. Отсчет идет с 0