Skip to content

Latest commit

 

History

History
65 lines (50 loc) · 2.65 KB

TODO.md

File metadata and controls

65 lines (50 loc) · 2.65 KB

Books API

ToDos

/books/

  • 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 автора – валидация на уровне БД.

/authors/

  • GET /api/authors/ — просмотр всех авторов.
  • GET /api/authors/{id} — просмотр всех книг автора.
  • POST /api/authors/ — создание автора.
  • DELETE /api/authors/{id} — удаление автора вместе со всеми его книгами.
  • Возможность создать автора при добавлении книги.
  • При удалении автора удаляются все его книги.

Общее

  • Написать тесты для каждого эндпоинта.
  • Используются корректные коды состояния HTTP. Например, 404, если ресурс не найден, или 201, если ресурс создан.

На будущее

  • Разработать подробную документацию API.
    • Задокументировать, какие данные выдаёт/принимает каждый endpoint.

Примеры запросов к API

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