Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект микросервисов на базе FastAPI

Обзор

Данный проект включает разработку двух микросервисов с использованием FastAPI:

  1. TODO-сервис: Сервис для управления задачами, поддерживающий операции CRUD.
  2. Сервис сокращения URL: Сервис для создания сокращенных ссылок, редиректа на исходные URL и получения статистики по ссылкам.

Оба сервиса контейнеризированы с использованием Docker и используют SQLite для хранения данных.


Особенности

TODO-сервис

  • Эндпоинты:
    • POST /items: Создание новой задачи.
    • GET /items: Получение списка всех задач.
    • GET /items/{item_id}: Получение задачи по её идентификатору.
    • PUT /items/{item_id}: Обновление задачи по идентификатору.
    • DELETE /items/{item_id}: Удаление задачи по идентификатору.
  • Данные сохраняются в SQLite с использованием именованных томов Docker.

Сервис сокращения URL

  • Эндпоинты:
    • POST /shorten: Создание сокращенного URL на основе полного URL.
    • GET /{short_id}: Редирект на исходный URL по сокращенному идентификатору.
    • GET /stats/{short_id}: Получение статистики по сокращенному URL.
  • Данные также сохраняются в SQLite.

Локальная установка и запуск

Предварительные требования

  • Python версии 3.9 и выше
  • SQLite
  • Docker (опционально, для контейнеризации)

Установка

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

    git clone <repository_url>
    cd fastapi-project
  2. Установите зависимости:

    pip install -r requirements.txt
  3. Запустите сервисы:

    • TODO-сервис:
      uvicorn todo_app.main:app --reload --port 8000
    • Сервис сокращения URL:
      uvicorn shorturl_app.main:app --reload --port 8001
  4. Доступ к API-документации:


Запуск с использованием Docker

Сборка Docker-образов

  1. Соберите образ Docker для TODO-сервиса:

    docker build -t todo-service ./todo_app
  2. Соберите образ Docker для сервиса сокращения URL:

    docker build -t shorturl-service ./shorturl_app

Запуск контейнеров Docker

  1. Запустите TODO-сервис:

    docker run -d -p 8000:80 -v todo_data:/app/data todo-service
  2. Запустите сервис сокращения URL:

    docker run -d -p 8001:80 -v shorturl_data:/app/data shorturl-service

Тестирование сервисов

Использование Swagger UI

Использование curl

  • 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>"

Развертывание в Docker Hub

  1. Войдите в Docker Hub:

    docker login
  2. Отметьте образы 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
  3. Опубликуйте образы в Docker Hub:

    • TODO-сервис:
      docker push <docker_hub_username>/todo-service:latest
    • Сервис сокращения URL:
      docker push <docker_hub_username>/shorturl-service:latest

Ссылки на Docker Hub


Лицензия

Данный проект распространяется под лицензией MIT.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages