Download the PHP package ioncurly/vetmanager-api-gateway without Composer
On this page you can find all versions of the php package ioncurly/vetmanager-api-gateway. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download ioncurly/vetmanager-api-gateway
More information about ioncurly/vetmanager-api-gateway
Files in ioncurly/vetmanager-api-gateway
Package vetmanager-api-gateway
Short Description Vetmanager API Gateway
License GPL-3.0-or-later
Homepage https://github.com/ionov-e/vetmanager-api-gateway
Informations about the package vetmanager-api-gateway
Vetmanager Api Gateway
Помощник для работы с АПИ Ветменеджера. Берет на себя: 1) авторизация; 2) получение данных и представление их в виде объектов и типизированных свойств этих объектов; 3) удобное получения связанных моделей с помощью методов полученных объектов (моделей); 4) отправка новых моделей, редактирование, удаление; 5) удобство для реализации кеширования: возможность предоставление модели в виде массива, и создание модели из массива; 6) унификация работы с моделями вне зависимости от способа получения.
Используется в основе библиотека для составления Query для АПИ-запросов Vetmanager - тут же документация к использованию классов для сложных АПИ-запросов: Builder и PagedQuery
Vetmanager REST API Postman Collection
Официальный сайт Vetmanager.ru
Для чего?
С помощью этой библиотеки удобно получать данные с АПИ Ветменеджера. Данные приходят в виде Active Records. Каждый Active Record связан с одним или с несколькими другими Active Records. Пример кода:
Установка
Короткое оглавление
- Начало работы/Конфигурация подключения
- Первоначальное получение объектов
- По ID
- Всех
- По Query
- Другими способами
- Создание новых моделей
- С помощью фасада и массива
- С помощью Active Record и сеттеров
- Редактирование моделей
- С помощью фасада и массива
- С помощью Active Record и сеттеров
- Удаление моделей
- С помощью фасада и массива
- С помощью Active Record и сеттеров
- Пример представления данных
- Связанные запросы
- Работа как с первоначальными массивами, кэширование
- Дополнительные особенности
- Объект FullName
- Объект FullPhone
- Возможность онлайн записи в клинике
- Немного об устройстве библиотеки
Подробное использование:
Начало работы/Конфигурация подключения
Простыми словами, объект ApiGateway - связующее звено с работой с АПИ Ветменеджера. Больше ничего создавать не нужно будет
-
С помощью субдомена и АПИ ключа
-
С помощью полного пути к серверу и АПИ ключа
-
С помощью субдомена, имени АПИ-сервиса и АПИ ключа (для специальных внутренних сервисов)
- С помощью полного пути к серверу, имени АПИ-сервиса и АПИ ключа (для специальных внутренних сервисов)
Первоначальное получение объектов
Вся логика получения Active Record вынесена в соответсвующий Facade. Вот пример получения клиента по ID:
То есть в этой библиотеке для каждого вида Active Record существует свой Facade. В Facade выделена логика работы АПИ-запросов и получения из ответов Active Record. Например, в Facade для Active Record Client содержится метод получения соответствующего Active Record по ID. Так же в Facade содержатся и другие методы получения (в том числе - через более сложные запросы - например, через фильтры).
Существуют Active Records, которые могут быть получены лишь с помощью конкретного АПИ-запроса. Например, MedicalCardByClient можно получить лишь по ID клиента. Недоступные методы получения в соответствующем фасаде просто не существуют
Получение объекта по ID
Получение всех объектов
Всегда возвращает массив моделей. Даже когда 1 объект получаем - обращаемся к нему через массив.
Получение объекта по Query запросу
Точно так же как и получение всех моделей, Query запросы всегда возвращают массив объектов. То есть даже когда 1 объект возвращается - обращаемся к нему через массив.
Ниже перечислены 3 варианта одного и того же запроса
1) С помощью Query Builder
[Ссылка на используемую библиотеку с большим количество примеров использования Builder](https://github.com/otis22/vetmanager-rest-api)
2) С помощью PagedQuery
[Ссылка на используемую библиотеку с большим количество примеров использования PagedQuery](https://github.com/otis22/vetmanager-rest-api)
С помощью этого объекта удобнее работать с пагинацией.
3) С помощью Get Parameters в виде строки
Сюда можно передать все те же Get-параметры, используемые в коллекции Postman. Более подробно о фильтрах, сортировке
и т.д. здесь - [Vetmanager REST API Docs](https://help.vetmanager.cloud/article/3029)
Альтернативные способы получения для конкретных моделей
Создание новых моделей
С помощью фасада и массива
С помощью Active Record и сеттеров
Редактирование моделей
С помощью фасада и массива
С помощью Active Record и сеттеров
Удаление моделей
С помощью фасада
С помощью Active Record
Пример представления данных модели
Получать каждое свойство через гет-метод. Типизация в каждом методе есть
Пример связанных запросов
Есть свойства объекта, которые вместо скалярных данных, возвращают другие объекты или массив объектов.
Пример обращения посложнее:
Та же запись, но с дополнительными переменными для понимания:
Нормализация объектов (приведение в массив)
С помощью этих методов несложно реализовать кеширование модели.
Каждый раз, когда нужно сделать повторяющийся одинаковый запрос:
1 - Попытаться получить уже закешированный объект в виде массива.
-
Если нашелся кеш:
2 - создать объект из этого кеша.
-
Если не нашелся кеш:
2 - сделать АПИ запрос на получение объекта
3 - в кеш закинуть модель в виде массива для следующей PHP сессии
Получение модели в виде массива
Возвращаются данные в том же виде, в котором и были получены по АПИ
Создание объекта из данных в виде массива
-
Получение одного объекта из закешированного массива модели (в виде ['id' => '12', '...' => ...]).
- Получение массива объектов из массива таких массивов с моделямм
Дополнительные особенности
Вспомогательный объект FullName
Например, у моделей User и Client есть геттер для FullName. У объекта FullName есть методы возвращающие полное имя в разном формате:
Если, предположим, отчества не будет, то каждый из методов просто пропустит слово без создания лишних пробелов, точек и т.д.
Вспомогательный объект FullPhone
Например, у модели Клиники есть метод возвращающий FullPhone. У FullPhone есть метод возвращающий телефон с кодом страны и выбранной маской номера, например в виде: +7(918)-277-21-21
Узнать возможность онлайн записи в клинике
Несколько вариантов. Возвращается bool:
Немного об устройстве библиотеки
Используемые библиотеки
- Symfony Serializer - Для создания DTO из массива данных (десериализованный JSON) и обратного процесса ( нормализации)
- Guzzle HTTP client - Для всех используемых запросов
-
vetmanager-rest-api - Помощник с Query-запросами АПИ Ветменджера
Только при разработке:
- PSALM
- PHPUnit
Внутренние особенности
Для большинства моделей АПИ Ветменджер кроме запрашиваемой модели отдает и содержимое других связанных моделей. Это также зависит от вида запроса - например, при запросе по ID обычно приходит наибольшее число связанных моделей. Для пользователя этой библиотеки это скрыто: в любом случае вне зависимости от какой вида Active Record получен - все методы и связи с другими моделями доступны. А как именно при вызове метода будут получаться данные: из уже полученных данных или при помощи дополнительного запроса - это тоже берет на себя библиотека.
Вот пример для понимания устройства. Но для использования это вовсе неважно. В использовании каждый из полученных Active Record идентичен (так как обладают одним и тем же набором доступных методов, которые просто реализованы по-разному):
Разработка
-
Копируем файл окружения из примера
- Заполняем
.env
-
Устанавливаем библиотеки
- Запуск юнит-тестов
Можно запускать другие команды, примеры можно посмотреть в composer.json
в разделе scripts
. Например:
All versions of vetmanager-api-gateway with dependencies
guzzlehttp/guzzle Version ^7.5
otis22/vetmanager-rest-api Version ^0.1.11
ext-mbstring Version *
phpdocumentor/reflection-docblock Version ^5.3
symfony/serializer Version ^6.3
symfony/property-access Version ^6.3