Необходимо создать сервис для хранения и подачи писем через форму обратной связи. Письма должны храниться в базе данных. Отправка на почту в данной задаче не предусмотрено. То есть не нужно настраивать почтовый сервер и реализовывать функцию отправки почты. Сервис должен предоставлять API, работающее поверх HTTP в формате JSON. Форма должна содержать следующие поля:
- Имя
- Текст сообщения
- Чекбокс на согласие обработки перс данных
- Язык программирования PHP;
- Сверстать форму с отправкой письма (можно использовать api которое будет реализовано через axios, fetch);
- Простая инструкция для запуска (в идеале — с возможностью запустить через docker-compose up, но это необязательно);
- 3 метода: получение списка писем, получение одного письма, создание письма (отправка через форму обратной связи);
- Обязательные поля - Имя, e-mail
- Можно использовать любой php фреймворк (yii, laravel) если это упростит и ускорит выполнение задачи
- База данных можно использовать любую бд: Mysql, Postgresql, MongoDb.
- Финальную версию нужно выложить на github.com;
- Сделать миграции или дамп бд в финале.
Если есть сомнения по деталям — решение принять самостоятельно, но в своём README.md рекомендуем выписать вопросы и принятые решения по ним.
Метод получения списка писем
- Пагинация: на одной странице должно присутствовать 10 писем;
- Cортировки: по дате создания (возрастание/убывание);
- Поля в ответе: имя, e-mail.
Метод получения конкретного письма
- Должен возвращать все поля;
- Опциональные поля (можно запросить, передав параметр fields): описание, ссылки на все фото.
Метод создания письма:
- Принимает все вышеперечисленные поля: имя, e-mail, текст сообщение;
- Возвращает ID созданного письма и код результата (ошибка или успех).
Не обязательно, но задание может быть выполнено с любым числом усложнений:
- Юнит тесты: постарайтесь достичь покрытия в 70% и больше;
- Контейнеризация: есть возможность поднять проект с помощью команды docker-compose up;
- Архитектура сервиса описана в виде текста и/или диаграмм
- Документация: есть структурированное описание методов сервиса через Swagger.
Для запуска потребуется наличие докера и докер-композа
Подключение по адресу: http://localhost:8000
Базу можно просмотреть: http://localhost:8080
команда | действие |
---|---|
init | Используется для первоначальной сборки контейнеров |
up | Запускает контейнеры |
down | Останавливает запущенные контейнеры |
Для применения миграций:
docker-compose run --rm php-cli php artisan migrate
Для заполнения базы тестовыми значениями:
docker-compose run --rm php-cli php artisan db:seed
Метод | путь | действие |
---|---|---|
GET | /api/messages/ | возвращает список всех сообщений |
GET | /api/message/{id} | Возвращает сообщение с соответствующим - id |
POST | /api/message/add | Создаёт новую запись и возвращает её id |