sancho2804/rest_client

PHP client for REST API services

1.0.5 2020-10-21 10:16 UTC

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

Аргументы:

  1. имя сервиса/имя файла карты

Возвращаемые значения: void

$yandex_disk->set_service('yandex_disk');

rest_client::exec($alias, $post_fields, [$arg1, ....])

Вызывает метод сервиса описанный в карте.

Аргументы:

  1. $alias - алиас по которому вызывается метод сервиса
  2. $post_fields - по умолчанию null. Если передать массив, то он передастся в POST заголовок
  3. любое кол-во аргументов необходимых для выполнения запроса к методу сервиса

Возвращаемые значения: по умолчанию - результат ответа в виде массива. Если $rest_client::$result_is_json установлен в false, то сырой результат.

$yandex_disk->exec('dir_info',null,'/');

rest_client::${method_name}($post_fields, [$arg1, ....])

Вызов метода сервиса как метод класса.

Аргументы:

  1. $post_fields - по умолчанию null. Если передать массив, то он передастся в POST заголовок
  2. любое кол-во аргументов необходимых для выполнения запроса к методу сервиса

Возвращаемые значения: по умолчанию - результат ответа в виде массива. Если 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.

Аргументы:

  1. $path - относительный путь до метода
  2. $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