Files
LibraryAPI/README.md

101 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. Клонируйте репозиторий:
```bash
git clone https://github.com/wowlikon/libraryapi.git
```
2. Перейдите в каталог проекта:
```bash
cd libraryapi
```
3. Настройте переменные окружения:
```bash
edit .env
```
4. Соберите контейнеры Docker:
```bash
docker compose build
```
5. Запустите приложение:
```bash
docker compose up api
```
Для создания новых миграций:
```bash
docker compose run --rm -T api alembic revision --autogenerate -m "Migration name"
```
Для запуска тестов:
```bash
docker compose up test
```
### **Эндпоинты API**
**Авторы**
| Метод | Эндпоинты | Описание |
|--------|-----------------------|---------------------------------------------|
| POST | `/authors` | Создать нового автора |
| GET | `/authors` | Получить список всех авторов |
| GET | `/authors/{id}` | Получить конкретного автора по ID с книгами |
| PUT | `/authors/{id}` | Обновить конкретного автора по ID |
| DELETE | `/authors/{id}` | Удалить конкретного автора по ID |
| GET | `/authors/{id}/books` | Получить список книг для конкретного автора |
**Книги**
| Метод | Эндпоинты | Описание |
|--------|-----------------------|----------------------------------------------|
| POST | `/books` | Создать новую книгу |
| GET | `/books` | Получить список всех книг |
| GET | `/book/{id}` | Получить конкретную книгу по ID с авторами |
| PUT | `/books/{id}` | Обновить конкретную книгу по ID |
| DELETE | `/books/{id}` | Удалить конкретную книгу по ID |
| GET | `/books/{id}/authors` | Получить список авторов для конкретной книги |
**Жанры**
| Метод | Эндпоинты | Описание |
|--------|-----------------------|----------------------------------------------|
| POST | `/genres` | Создать новый жанр |
| GET | `/genres` | Получить список всех жанров |
| GET | `/genres/{id}` | Получить конкретный жанр по ID |
| PUT | `/genres/{id}` | Обновить конкретный жанр по ID |
| DELETE | `/genres/{id}` | Удалить конкретный жанр по ID |
| GET | `/books/{id}/genres` | Получить список жанров для конкретной книги |
**Связи**
| Метод | Эндпоинты | Описание |
|--------|------------------------------|-----------------------------------------|
| GET | `/relationships/author-book` | Получить список всех связей автор-книга |
| POST | `/relationships/author-book` | Добавить связь автор-книга |
| DELETE | `/relationships/author-book` | Удалить связь автор-книга |
### **Используемые технологии**
- **FastAPI**: Современный web фреймворк для построения API с использованием Python, известный своей скоростью и простотой использования.
- **Pydantic**: Библиотека для валидации данных и управления настройками, использующая аннотации типов Python.
- **SQLModel**: Библиотека для взаимодействия с базами данных с использованием классов Python, объединяющая функции SQLAlchemy и Pydantic.
- **Alembic**: Легковесный инструмент для миграции базы данных на основе SQLAlchemy.
- **PostgreSQL**: Сильная, открытая реляционная система управления базами данных.
- **Docker**: Платформа для разработки, распространения и запуска приложений в контейнерах.
- **Docker Compose**: Инструмент для определения и запуска многоконтейнерных приложений Docker.