mirror of
https://github.com/wowlikon/LibraryAPI.git
synced 2025-12-11 21:30:46 +00:00
main
LibraryAPI
Это проект приложения на FastAPI - современном веб фреймворке для создания API на Python. Я использую Pydantic для валидации данных, SQLModel для взаимодействия с базой данных, Alembic для управления миграциями, PostgreSQL как систему базы данных и Docker Compose для легкого развертывания.
Ключевые элементы:
- FastAPI: Предоставляет высокопроизводительность и простоту для разработки RESTful API, поддерживает асинхронные операции и автоматическую генерацию документации.
- Pydantic: Используется для валидации данных и сериализации, позволяет легко определить схемы данных.
- SQLModel: Объединяет SQLAlchemy и Pydantic, включая операции с базой данных с помощью классов Python.
- Alembic: Инструмент для управления миграциями базы данных, упрощающий отслеживание и применение изменений в схеме базы данных.
- PostgreSQL: Надежная реляционная база данных для хранения данных.
- Docker Compose: Упрощает развертывание приложения и его зависимостей в контейнерах.
Инструкция по установке
-
Клонируйте репозиторий:
git clone https://github.com/wowlikon/libraryapi.git -
Перейдите в каталог проекта:
cd libraryapi -
Настройте переменные окружения:
edit .env -
Соберите контейнеры Docker:
docker compose build -
Запустите приложение:
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 |
Получить информацию о сервисе |
erDiagram
AUTHOR {
int id PK "ID автора"
string name "Имя автора"
}
BOOK {
int id PK "ID книги"
string title "Название книги"
string description "Описание книги"
}
GENRE {
int id PK "ID жанра"
string name "Название жанра"
}
AUTHOR_BOOK {
int author_id FK "ID автора"
int book_id FK "ID книги"
}
GENRE_BOOK {
int genre_id FK "ID жанра"
int book_id FK "ID книги"
}
AUTHOR ||--o{ AUTHOR_BOOK : "писал"
BOOK ||--o{ AUTHOR_BOOK : "написан"
BOOK ||--o{ GENRE_BOOK : "принадлежит"
GENRE ||--o{ GENRE_BOOK : "содержит"
Используемые технологии
- FastAPI: Современный web фреймворк для построения API с использованием Python, известный своей скоростью и простотой использования.
- Pydantic: Библиотека для валидации данных и управления настройками, использующая аннотации типов Python.
- SQLModel: Библиотека для взаимодействия с базами данных с использованием классов Python, объединяющая функции SQLAlchemy и Pydantic.
- Alembic: Легковесный инструмент для миграции базы данных на основе SQLAlchemy.
- PostgreSQL: Сильная, открытая реляционная система управления базами данных.
- Docker: Платформа для разработки, распространения и запуска приложений в контейнерах.
- Docker Compose: Инструмент для определения и запуска многоконтейнерных приложений Docker.
Languages
Python
95.2%
HTML
2.8%
Mako
1%
Dockerfile
1%
