-
GET /api/books/{id}
— получение информации о книге. -
POST /api/books/
— создание книги с ID существующего автора. -
POST /api/books/
+ автор — создание книги с именем и фамилией автора создаёт книгу и автора. -
PUT /api/books/{id}
— изменение или создание книги (201 если создали, 200 если обновили). -
PATCH /api/books/{id}
— частичное изменение книги. -
DELETE /api/books/{id}
— удаление книги. - Есть валидация ID автора – валидация на уровне БД.
-
GET /api/authors/
— просмотр всех авторов. -
GET /api/authors/{id}
— просмотр всех книг автора. -
POST /api/authors/
— создание автора. -
DELETE /api/authors/{id}
— удаление автора вместе со всеми его книгами. - Возможность создать автора при добавлении книги.
- При удалении автора удаляются все его книги.
- Написать тесты для каждого эндпоинта.
- Используются корректные коды состояния HTTP. Например, 404, если ресурс не найден, или 201, если ресурс создан.
- Разработать подробную документацию API.
- Задокументировать, какие данные выдаёт/принимает каждый endpoint.
curl --request GET \
--url http://127.0.0.1:5000/api/books/ | jq
curl --request POST \
--url http://127.0.0.1:5000/api/authors/ \
--header 'Content-Type: application/json' \
--data '{"first_name": "Александр", "middle_name": "Сергеевич", "last_name": "Пушкин"}' | jq
curl --request DELETE \
--url http://127.0.0.1:5000/api/authors/4
curl --request POST \
--url http://127.0.0.1:5000/api/books/ \
--header 'Content-Type: application/json' \
--data '{"title": "The New Book", "author": {"id": 1}}' | jq
curl --request POST \
--url http://127.0.0.1:5000/api/books/ \
--header 'Content-Type: application/json' \
--data '{"title": "The New Book", "author": {"last_name": "Ivanov", "first_name": "Ivan"}}' | jq