Данный проект включает разработку двух микросервисов с использованием FastAPI:
- TODO-сервис: Сервис для управления задачами, поддерживающий операции CRUD.
- Сервис сокращения URL: Сервис для создания сокращенных ссылок, редиректа на исходные URL и получения статистики по ссылкам.
Оба сервиса контейнеризированы с использованием Docker и используют SQLite для хранения данных.
- Эндпоинты:
POST /items: Создание новой задачи.GET /items: Получение списка всех задач.GET /items/{item_id}: Получение задачи по её идентификатору.PUT /items/{item_id}: Обновление задачи по идентификатору.DELETE /items/{item_id}: Удаление задачи по идентификатору.
- Данные сохраняются в SQLite с использованием именованных томов Docker.
- Эндпоинты:
POST /shorten: Создание сокращенного URL на основе полного URL.GET /{short_id}: Редирект на исходный URL по сокращенному идентификатору.GET /stats/{short_id}: Получение статистики по сокращенному URL.
- Данные также сохраняются в SQLite.
- Python версии 3.9 и выше
- SQLite
- Docker (опционально, для контейнеризации)
-
Клонируйте репозиторий:
git clone <repository_url> cd fastapi-project
-
Установите зависимости:
pip install -r requirements.txt
-
Запустите сервисы:
- TODO-сервис:
uvicorn todo_app.main:app --reload --port 8000
- Сервис сокращения URL:
uvicorn shorturl_app.main:app --reload --port 8001
- TODO-сервис:
-
Доступ к API-документации:
- TODO-сервис: http://127.0.0.1:8000/docs
- Сервис сокращения URL: http://127.0.0.1:8001/docs
-
Соберите образ Docker для TODO-сервиса:
docker build -t todo-service ./todo_app
-
Соберите образ Docker для сервиса сокращения URL:
docker build -t shorturl-service ./shorturl_app
-
Запустите TODO-сервис:
docker run -d -p 8000:80 -v todo_data:/app/data todo-service
-
Запустите сервис сокращения URL:
docker run -d -p 8001:80 -v shorturl_data:/app/data shorturl-service
- TODO-сервис: http://127.0.0.1:8000/docs
- Сервис сокращения URL: http://127.0.0.1:8001/docs
- TODO-сервис:
- Создание задачи:
curl -X POST "http://127.0.0.1:8000/items" -H "Content-Type: application/json" -d '{"title": "Пример задачи", "description": "Описание", "completed": false}'
- Получение всех задач:
curl -X GET "http://127.0.0.1:8000/items"
- Создание задачи:
- Сервис сокращения URL:
- Создание сокращенного URL:
curl -X POST "http://127.0.0.1:8001/shorten" -H "Content-Type: application/json" -d '{"url": "https://example.com"}'
- Получение статистики:
curl -X GET "http://127.0.0.1:8001/stats/<short_id>"
- Создание сокращенного URL:
-
Войдите в Docker Hub:
docker login
-
Отметьте образы Docker тегами:
- TODO-сервис:
docker tag todo-service:latest <docker_hub_username>/todo-service:latest
- Сервис сокращения URL:
docker tag shorturl-service:latest <docker_hub_username>/shorturl-service:latest
- TODO-сервис:
-
Опубликуйте образы в Docker Hub:
- TODO-сервис:
docker push <docker_hub_username>/todo-service:latest
- Сервис сокращения URL:
docker push <docker_hub_username>/shorturl-service:latest
- TODO-сервис:
- TODO-сервис: Docker Hub Link
- Сервис сокращения URL: Docker Hub Link
Данный проект распространяется под лицензией MIT.