Api users
- PHP >= 8.1
- Composer >= 2
- make >= 4
Необходимо добавить строчку в файле /etc/hosts 127.0.0.1 laravel-docker.ru
Необходимо выполнить в корне проекта make setup
make lint - запуск codeSniffer
make lint-fix - запуск исправления codeSniffer
make test - запуск тестов
test-coverage - запуск тестов с покрытием
- Docker 20.10.22
- PHP 8.1.1-fpm-alpine
- Nginx stable-alpine
- Redis 6-alpine
- PostgreSQL postgres:13-alpine
Необходимо реализовать систему на фреймворке Laravel с использованием очереди сообщений.
Система по приему заявок на создание/регистрацию пользователей от “сторонних” систем. Система должна быть реализована на фреймворке Laravel состоять из двух основных модулей. Задача первого модуля - принимать заявки на создание пользователей и передавать их на асинхронное исполнение второму модулю через встроенный брокер очередей Laravel и отвечать инициатору создания в синхронном режиме только после того как пользователь будет создан. Задача второго модуля - принимать сообщения-заявки из очереди - и создавать пользователя в реляционной БД.
Модуль по приему заявок должен предоставлять REST API для выполнения следующих операций:
- Создание пользователя
- Получения и информации о ранее созданном пользователе по ID Обе операции должны выполняться асинхронно (модулем 2), однако ответ системе-инициатору должен выдаваться в синхронном режиме (запрос-ответ).
Минимально необходимая структура объекта “Пользователь” на уровне БД:
- ID
- Логин
- Пароль
- Фамилия
- Имя
- Дата регистрации
Нефункциональные требования: Приложение должно иметь документированный REST интерфейс (OpenAPI/Swagger). Приложение должно быть прислано в виде архива (или ссылки на гитхаб) с инструкциями по сборке и запуску.
Большим плюсом будет: Наличие docker-compose скрипта для сборки и запуска приложения. Наличие unit и интеграционных тестов, а также сопроводительного текста в свободной форме, аргументирующего те или иные моменты, касающиеся деталей реализации.
Программа принимает данные от любого клиента по HTTP протоколу через архитектуру REST API.
Архитектура приложения: REST API -> контроллер -> модель -> база данных.
REST API построен в формате JSON.
В качестве модели, взаимодействующей с базой данных, выступает класс User.
Асинхронность обеспечивается механизмом jobs, который позволяет использовать многопоточность данных.
Тестирование происходит с помощью интеграционных тестов.
Используется ресурсный роутинг и контроллеры ларавеля для rest api, который специально для этого сделан. Запросы на сохранение валидируются с помощью отдельно класса валидации, чтобы вынести этот участок кода отдельно и не захламлять контроллер. Передаем данные для сохранения и получения очередям ларавеля, чтобы скорость отдачи пользователю была более быстрая, если например сохранять фото синхронно, тогда код будет выполняться построчно и пользователь будет долго ждать пока загрузятся все фото. Написанны интеграционные тесты на все методы, которые покрывают всю функциональность кода.