Skip to content

Реализация простого API для управления пользователями

Notifications You must be signed in to change notification settings

alexpro2022/users_service-FastAPI

Repository files navigation

Users management service:

Test Suite codecov

Simple RESTful API using FastAPI for a users management:

Сервис предоставляет API для создания, просмотра и удаления пользователей.


Оглавление


Технологии

Подробнее

Python asyncio FastAPI Pydantic SQLAlchemy Alembic PostgreSQL Uvicorn docker_compose Pytest Pytest-asyncio pytest-cov coverage pre-commit

⬆️Оглавление


Описание работы

Swagger позволяет осуществлять http-запросы к работающему сервису, тем самым можно управлять пользователями в рамках политики сервиса (указано в Swagger для каждого запроса - в данном проекте нет пользовательских ролей и авторизации, поэтому все операции доступны любому пользователю).

Операции:

  • Создание нового пользователя:
    • необходимо указать username(3-50 символов) и email(уникальное поле). Входные данные валидируются.
    • при создании автоматически устанавливается текущая дата регистрации;
  • Получение списка всех пользователей;
  • Получение информации о конкретном пользователе по его идентификатору;
  • Удаление пользователя.

⬆️Оглавление


Установка и запуск приложения и тестов:

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

Предполагается, что пользователь установил Docker и Docker Compose на локальной машине или на удаленном сервере, где проект будет запускаться в контейнерах. Проверить наличие можно выполнив команды:

docker --version && docker-compose --version

Локальный запуск
  1. Клонируйте репозиторий с GitHub и введите данные для переменных окружения (значения даны для примера, но их можно оставить):
git clone https://github.com/alexpro2022/users_service-FastAPI.git
cd users_service-FastAPI
cp env_example .env
nano .env

В виртуальном окружении (БД - SQLite)
  1. Создайте и активируйте виртуальное окружение:

    • Если у вас Linux/macOS
     python -m venv venv && source venv/bin/activate
    • Если у вас Windows
     python -m venv venv && source venv/Scripts/activate
  2. Установите в виртуальное окружение все необходимые зависимости из файла requirements.txt:

python -m pip install --upgrade pip
pip install -r requirements/test.requirements.txt
  1. В проекте уже инициализирована система миграций Alembic с настроенной автогенерацией имен внешних ключей моделей и создан файл первой миграции. Чтобы ее применить, необходимо выполнить команду:
alembic upgrade head

Будут созданы все таблицы из файла миграций.

  1. Запуск приложения - выполните команду:
uvicorn app.main:app

Сервер Uvicorn запустит приложение по адресу http://127.0.0.1:8000. Администрирование приложения может быть осуществлено через Swagger доступный по адресу http://127.0.0.1:8000/docs .

  1. Остановить Uvicorn можно комбинацией клавиш Ctl-C.

  2. Для запуска тестов выполните команду:

pytest --cov --cov-config=.coveragerc

В docker-контейнере (БД - PostgreSQL)
  1. Из корневой директории проекта выполните команду:
docker compose -f docker/docker-compose.yml up -d --build

Проект будет развернут в docker-контейнерах (db, web) по адресу http://localhost:8000. Администрирование приложения может быть осуществлено через Swagger доступный по адресу http://localhost:8000/docs .

  1. Остановить docker и удалить контейнеры можно командой из корневой директории проекта:
docker compose -f docker/docker-compose.yml down

Если также необходимо удалить том базы данных:

docker compose -f docker/docker-compose.yml down -v
  1. Для запуска тестов выполните команду:
docker build -f ./docker/test.Dockerfile -t app .
docker run --name tests app
docker container rm tests
docker rmi app


Для создания тестовых постов можно воспользоваться следующими данными:

{
  "username": "Test user 1",
  "email": "test_user1@yandex.ru"
}
{
  "username": "Test user 2",
  "email": "test_user2@yandex.ru"
}

⬆️Оглавление


Удаление приложения:

Из корневой директории проекта выполните команду:

cd .. && rm -fr users_service-FastAPI

⬆️Оглавление


Автор:

Aleksei Proskuriakov

⬆️В начало

About

Реализация простого API для управления пользователями

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published