Wissen_Books
Описание
Books information microservices Laravel/PHP
Языки
- PHP99,1%
- Shell0,8%
- Остальные0,1%
wissen_books
Description
Ensi Backend Service Skeleton
Представляет из себя модифицированную под наши нужды экземпляр
Разворот непосредественно самого скелетона локально для разработки
Разворот сервис не отличается от разворота любого другого сервиса Ensi и описан тут
Разворот сервиса из Ensi Backend Service Skeleton
- git clone git@gitlab.com:greensight/ensi/backend-service-skeleton.git <new-repo-name>
- cd <new-repo-name>
- rm -rf .git && git init
- git remote add origin git@gitlab.com:greensight/<project>/<new-repo-name>.git
- Указываем в
нужный.env.exampleAPP_NAME - Переимновываем/удаляем все заглушки вроде
в конфигах, документации и коде сервисаbackend_skeleton - cp .env.example .env
- Указываем в .env доступы к БД
- Обновляем README.md
- composer i && npm i
- git add . && git commit -m "Initial commit" && git push -u origin master
- php artisan key:generate
- php artisan storage:link
Модификации относительно чистого Laravel
Структура сервиса
Подробно прочитать про отличия структуры сервиса от стандартного для Laravel вида можно почитать здесь
Готовый .gitignore
Внесены всякие pdf-ки, архивы, служебные файлы IDEшек и служебных инструментов
Timezone и Locale
config('app.timezone') = 'Europe/Moscow'; config('app.locale') = 'ru';
Дополнительный общий .env
Переменные окружения читаются не только из .env файла в корне проекта, но и из .env файла в директории на уровень выше, если он есть.
Приоритет остается у переменных из локального файла. Упрощает управление переменными окружения на тестовом сервере с множеством площадок.
Реализация в .
Добавлены lang файлы для русского языка
Для пагинации и валидации.
Git hooks
Хуки лежат в репозитории, в директории .git_hooks Устанавливаются автоматически через husky во время npm install
Управлять какие именно хуки выполняются и в каком порядке можно в файле .huskyrc.json, он лежит в репозитории. При необходимости его содержимое можно переопределить файлом .huskyrc с тем же форматом, он уже находится в .gitignore.
Ensi Storage
Для работы с файлами в Ensi добавлен пакет ensi/laravel-ensi-filesystem Для работы всего этого нужно
- Чтобы config/ensi-filesystem.php был выставлен корректный код текущего сервиса в качестве дефолтного
- В config/filesystems.php в $ensiServicesCodes нужно задать список сервисов, с чьими хранилищами будет осуществляться взаимодействие (включая текущий).
Добавлены технические пакеты для упрощения разработки и улучшения её качества
composer.json: "barryvdh/laravel-ide-helper", "beyondcode/laravel-dump-server", "friendsofphp/php-cs-fixer", "php-parallel-lint/php-var-dump-check"
package.json: "husky" "@stoplight/spectral" "@openapitools/openapi-generator-cli // для ускорения openapi генераторов
Часть из них задействована в хуках
Добавлен хэлсчек
GET /health возвращает ОК с кодом 200.
Установлены пакеты для работы с API
- greensight/laravel-serve-stoplight
- greensight/laravel-openapi-client-generator
- greensight/laravel-openapi-server-generator
- spatie/laravel-query-builder
Пример описания API при помощи спецификации openapi 3 под требования генераторов и Ensi API Design Guide можно найти здесь
Подчищено всё ненужное из Laravel для чистоты и быстродействия
- встроенный в Laravel фронтэнд
- всё что касается User Management-а и сессий
- AWS, PUSHER и прочее в конфигах
- Broadcasting
- большинство middleware подлюкченных по-умолчанию
- часть Service Provider-ов закоментирована (если из-за этого что-то сломалось - раскоментируйте)
robots.txt
robots.txt изменен, чтобы по-умолчанию приложение запрещало роботам индексацию если они вдруг до него доберутся
ini_set('serialize_precision', -1)
Решает кейс
$price = ["price" => round("45.99", 2)];
echo json_encode($price);
Выставляется в
Ошибки валидации всегда возвращаются как json в нужном формате
Реализовано в
Лицензия
Открытая лицензия на право использования программы для ЭВМ Greensight Ecom Platform (GEP).