Используя PHP 7 и фреймворк Symfony 5 (последние версии PHP 7.4 и Symfony 5.2), а также Doctrine ORM и с использованием Docker контейнера, написать REST API для создания и получения книг и авторов из базы данных в формате JSON.
- Написать миграцию, засеивающую тестовые таблицы ~10 000 книгами и ~10 000 авторами
- Реализовать запросы на создание книги и автора в базе /book/create, /author/create
- Реализовать запрос на получение списка книг с автором из базы /book/search c поиском по названию книги
- Написать Unit-тест
- Используя возможности Symfony по локализации контента, сделать мультиязычный метод получения информации о книге /{lang}/book/{Id}, где {lang} = en|ru и {Id} = Id книги. Формат ответа: {Id: 1, 'Name':'War and Peace|Война и мир'} - поле Name выводить на языке локализации запроса.
Автор:
{
"Id": 1,
"Name": "Лев Толстой"
}Книга:
{
"Id": 1,
"Name": "War and peace|Война и мир",
"Author": [
{
"Id": 1,
"Name": "Лев Толстой"
}
]
}Результат нужно опубликовать на Github с мини-инструкцией по сборке приложения, включая docker-compose.yml, и прислать нам ссылку.
- клонировать репозиторий папку /project
- в папке project/docker, скопировать и переименовать файл
.env.example -> .env
-
перейти в папку project/docker, запустить:
> docker-compose upдождаться пока сбилдятся образы и запустятся все контейнеры (10-15 мин)
убедиться, что Постгрес создал БД, Роль, Гранты (читать консоль)
-
перейти в папку project/docker
-
убедиться, что все контейнеры удачно запустились (запущены: php, nginx, pgs)
> docker ps -
зайти в контейнер php:
> docker-compose exec phpfpm bashпри этом мы должны уже находиться в папке /var/www/site.local
-
установить зависимости:
> composer install -
проверить, что Симфони ожил:
в браузере набрать localhost:8888/
должна открыться титульная страница с Симфони 5.2 -
можно проверить подключение к БД из IDE:
testuser/testpass
db: testapp
port: 54320 -
накатить миграции:
> php bin/console doctrine:migrations:migrate
ответить yes
если подключались снаружи к БД, то проверить что таблицы создались -
накатить фикстуры:
> php bin/console doctrine:fixtures:load
ответить yes -
запустить тесты:
> php bin/phpunit -
доступны роуты
импортировать в постман коллекцию из файла bell_test_proj.pm_collection.json