centras/laravel-centras

centras library

1.0.4 2024-04-09 07:13 UTC

This package is auto-updated.

Last update: 2024-05-09 07:31:38 UTC


README

Laravel-centras - наша собственная библиотека, включающая в себя некоторые общие возможности, присущие всем микросервисам.

На данный момент, основной функционал представляет из себя:

  1. Фасады, для отправки ответов при обращении к API, по единому шаблону.
    • Включает в себя заготовленные константы для статус кодов HTTP ответов.
    • Конструктор для создания ответов.
  2. Провайдер для логирования входящих запросов, и подзапросов, а также ответов, и подответов.
    • Использует сервис Graylog для логгирования.
  3. Базовые классы, для формирования общего шаблона исключений.
    • В список порожденных исключений входят:
      • AcceessDeniedException
      • ApiException
      • CentrasException
      • ConnectionException
      • DatabaseException
      • FileException
      • InvalidOperationException
      • NotFoundException
      • PaymentException
      • TimeoutException
      • ValidationException

Установка

  1. Добавьте в конец корневого 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 файл одного из микросервисов.

  1. Создайте в КОРНЕВОМ каталоге проекта, файл с названием auth.json.
  2. Скопируйте в только что созданный файл, содержимое из файла auth.json, находящегося в проекте Config, в папке .dev
  3. Запустите комманду.
 composer require centras/laravel-centras:1.0.1 
  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
]);