1.Описание
2.Документация
3.Поднятие проекта
4.Тест
5.Стек
6.Доступы
7.Задача
REST API JSON приложение для создания автора и книг,поиск по авторам, отображение книг locale
1.Создание автора
2.Создание Книги
3.Поиск автора
4.Информация о книге
-
Описание: Создание автора, принимает json с обязательным полем 'name'
Метод: POST
Адрес:/author/create
Тело:
{"name":"Лев"}
Ответ:
{"text": "Автор успешно создан","author": {"id": 75365,"name": "Лев","books": []}}
-
Описание: Создание книги, принимает json с обязательным полем 'name' и 'author_id'
Метод: POST
Адрес:/book/create
Тело:
{"name": "школьная вечеринка","author_id": 75365}
Ответ:
{"text": "Книга успешно создана","book": {"id": 75293,"name": "школьная вечеринка два", "author": {"id": 75365,"name": "Лев","books": [{"id": 75292,"name": "школьная вечеринка"}]} } }
- Описание: Поиск автора по имени, принимает name
Метод: GET
Адрес:Ответ:/author/search?name=Лев
{ "authors": [{"id": 75365,"name": "Лев","books": [{"id": 75292,"name": "школьная вечеринка"},{"id": 75293, "name": "школьная вечеринка два"}]}]}
-
Описание: Информация о книге
Параметры:- _locale -- ru|en
- id -- \d
Метод: GET
Адрес:/{_locale}/book/{id}
Ответ:
{"book": {"id": 75292,"name": "school party","author": {"id": 75365,"name": "a lion", "books": {"1": {"id": 75293,"name": "school party two"} } } } }
-
Скачать репозиторий в домашнюю папку
-
в файле etc/hosts добавить local
127.0.0.1 airlogic.local
-
В файле Airlogic/deployment/docker-compose/dev/.env изменить поле HOMENAME на свою домашнюю директорию
-
перейти в Airlogic/deployment/docker-compose/dev выполнить
docker-compose build
docker-compose up -d
-
Зайти в котейнер
docker exec -it dev_airlogic_1 bash
-
Сменить пользователя
su apps
-
Выполнить команды
cd ~/airlogic/
composer install
php bin/console doctrine:migrations:migrate
php bin/console doctrine:fixtures:load
В корне проекта выполнить команду
php ./vendor/bin/phpunite
- Symfony 5.4.6
- php7.4
- Библиотеки
- doctrine/orm
- jms/serialize
- symfony/validator
- symfony/test-pack
- dejurin/php-google-translate-for-free
- doctrine/doctrine-fixtures-bundle
- symfony/yaml
- fzaninotto/faker
Postgres
- host
172.17.0.1
- port
54321
- login
postgres
- password
root
- dataBase
airlogic
Используя 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': 'Лев Толстой'
}]
}