centras / laravel-centras
centras library
Requires (Dev)
- phpunit/phpunit: ~5.0 || ~6.0 || ~7.0
README
Laravel-centras - наша собственная библиотека, включающая в себя некоторые общие возможности, присущие всем микросервисам.
На данный момент, основной функционал представляет из себя:
- Фасады, для отправки ответов при обращении к API, по единому шаблону.
- Включает в себя заготовленные константы для статус кодов HTTP ответов.
- Конструктор для создания ответов.
- Провайдер для логирования входящих запросов, и подзапросов, а также ответов, и подответов.
- Использует сервис Graylog для логгирования.
- Базовые классы, для формирования общего шаблона исключений.
- В список порожденных исключений входят:
- AcceessDeniedException
- ApiException
- CentrasException
- ConnectionException
- DatabaseException
- FileException
- InvalidOperationException
- NotFoundException
- PaymentException
- TimeoutException
- ValidationException
- В список порожденных исключений входят:
Установка
- Добавьте в конец корневого json-объекта, в файле composer.json, следующую запись:
"repositories": { "git.cic.kz/86": { "type": "composer", "url": "https://git.cic.kz/api/v4/group/86/-/packages/composer/packages.json" } }
Для примера, можно взять composer.json файл одного из микросервисов.
- Создайте в КОРНЕВОМ каталоге проекта, файл с названием
auth.json
. - Скопируйте в только что созданный файл, содержимое из файла
auth.json
, находящегося в проекте Config, в папке .dev - Запустите комманду.
composer require centras/laravel-centras:1.0.1
- После окончания выполнения предыдущей команды, запустите следующую.
composer update centras/laravel-centras
Использование
1. Ответы и исключения
Для использования ответов, и исключений, заверните массив, представляющий результат выполнения программы в специальную функцию-обёртку.
Для этого импортируйте следующие классы в ваш контроллер.
use App\Api\Api; use Illuminate\Http\JsonResponse;
В конце вашего метода, добавьте следующую конструцию.
return Api::response( {массив данных}, {код статуса}, {сообщение} );
Укажите в качестве возвращаемых типов данных вашего метода JsonResponse
.
После этого всё должно заработать.
Для примера, можно взять один из проектов.
2. Логгирование
В-первую очередь, проверьте актуальность пакета laravel-centras
.
Подключите провайдер CentrasServiceProvider
, в файле config/app.php
, чтобы получилось следующее:
...App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\CentrasServiceProvider::class, ],
После этого вам необходимо добавить в папку config
, файл с названием centras.php
, с содержимым:
<?php return [ 'graylog_url' => 'http://logger:8000/api/write/log' ];
Теперь же, всё что вам остаётся, использовать объект из провайдера, с названием IOLog
.
Запрос делится на request
(далее - запросы)
app('IOLog')->request($data);
и response
(далее - ответы).
app('IOLog')->response($result->original);
-
Вам необходимо следить чтобы количество ответов не превышало количество запросов.
-
В идеале их количество должно совпадать.
-
Следите чтобы данные, что вы посылаете в логгер, представляли из себя словарь.
Иногда, чтобы удовлетворить все эти условия, запрос даже может выглядеть так:
$this->ioLog->response([ 'result' => (array)$this->response ]);