Files
LibraryAPI/README.md

6.7 KiB
Raw Blame History

logo

LibraryAPI

Это проект приложения на FastAPI - современном веб фреймворке для создания API на Python. Я использую Pydantic для валидации данных, SQLModel для взаимодействия с базой данных, Alembic для управления миграциями, PostgreSQL как систему базы данных и Docker Compose для легкого развертывания.

Ключевые элементы:

  1. FastAPI: Предоставляет высокопроизводительность и простоту для разработки RESTful API, поддерживает асинхронные операции и автоматическую генерацию документации.
  2. Pydantic: Используется для валидации данных и сериализации, позволяет легко определить схемы данных.
  3. SQLModel: Объединяет SQLAlchemy и Pydantic, включая операции с базой данных с помощью классов Python.
  4. Alembic: Инструмент для управления миграциями базы данных, упрощающий отслеживание и применение изменений в схеме базы данных.
  5. PostgreSQL: Надежная реляционная база данных для хранения данных.
  6. Docker Compose: Упрощает развертывание приложения и его зависимостей в контейнерах.

Инструкция по установке

  1. Клонируйте репозиторий:

    git clone https://github.com/wowlikon/libraryapi.git
    
  2. Перейдите в каталог проекта:

    cd libraryapi
    
  3. Настройте переменные окружения:

    edit .env
    
  4. Соберите контейнеры Docker:

    docker compose build
    
  5. Запустите приложение:

    docker compose up api
    

Для создания новых миграций:

docker compose run --rm -T api alembic revision --autogenerate -m "Migration name"

Для запуска тестов:

docker compose up test

Эндпоинты API

Авторы

Метод Эндпоинты Описание
POST /authors Создать нового автора
GET /authors Получить список всех авторов
GET /authors/{id} Получить автора по ID с книгами
PUT /authors/{id} Обновить автора по ID
DELETE /authors/{id} Удалить автора по ID

Книги

Метод Эндпоинты Описание
POST /books Создать новую книгу
GET /books Получить список всех книг
GET /book/{id} Получить книгу по ID с авторами
PUT /books/{id} Обновить книгу по ID
DELETE /books/{id} Удалить книгу по ID

Жанры

Метод Эндпоинты Описание
POST /genres Создать новый жанр
GET /genres Получить список всех жанров
GET /genres/{id} Получить жанр по ID
PUT /genres/{id} Обновить жанр по ID
DELETE /genres/{id} Удалить жанр по ID

Связи

Метод Эндпоинты Описание
GET /authors/{id}/books Получить список книг для автора
GET /books/{id}/authors Получить список авторов для книги
POST /relationships/author-book Связать автор-книга
DELETE /relationships/author-book Разделить автор-книга
GET /genres/{id}/books Получить список книг для жанра
GET /books/{id}/genres Получить список жанров для книги
POST /relationships/genre-book Связать автор-книга
DELETE /relationships/genre-book Разделить автор-книга

Другие

Метод Эндпоинты Описание
GET /api/info Получить информацию о сервисе

Используемые технологии

  • FastAPI: Современный web фреймворк для построения API с использованием Python, известный своей скоростью и простотой использования.
  • Pydantic: Библиотека для валидации данных и управления настройками, использующая аннотации типов Python.
  • SQLModel: Библиотека для взаимодействия с базами данных с использованием классов Python, объединяющая функции SQLAlchemy и Pydantic.
  • Alembic: Легковесный инструмент для миграции базы данных на основе SQLAlchemy.
  • PostgreSQL: Сильная, открытая реляционная система управления базами данных.
  • Docker: Платформа для разработки, распространения и запуска приложений в контейнерах.
  • Docker Compose: Инструмент для определения и запуска многоконтейнерных приложений Docker.