Сервис предоставляет API для создания, просмотра и удаления пользователей.
Swagger позволяет осуществлять http-запросы к работающему сервису, тем самым можно управлять пользователями в рамках политики сервиса (указано в Swagger для каждого запроса - в данном проекте нет пользовательских ролей и авторизации, поэтому все операции доступны любому пользователю).
Операции:
- Создание нового пользователя:
- необходимо указать username(3-50 символов) и email(уникальное поле). Входные данные валидируются.
- при создании автоматически устанавливается текущая дата регистрации;
- Получение списка всех пользователей;
- Получение информации о конкретном пользователе по его идентификатору;
- Удаление пользователя.
Предварительные условия
Предполагается, что пользователь установил Docker и Docker Compose на локальной машине или на удаленном сервере, где проект будет запускаться в контейнерах. Проверить наличие можно выполнив команды:
docker --version && docker-compose --version
Локальный запуск
- Клонируйте репозиторий с GitHub и введите данные для переменных окружения (значения даны для примера, но их можно оставить):
git clone https://github.com/alexpro2022/users_service-FastAPI.git
cd users_service-FastAPI
cp env_example .env
nano .env
В виртуальном окружении (БД - SQLite)
-
Создайте и активируйте виртуальное окружение:
- Если у вас Linux/macOS
python -m venv venv && source venv/bin/activate
- Если у вас Windows
python -m venv venv && source venv/Scripts/activate
-
Установите в виртуальное окружение все необходимые зависимости из файла requirements.txt:
python -m pip install --upgrade pip
pip install -r requirements/test.requirements.txt
- В проекте уже инициализирована система миграций Alembic с настроенной автогенерацией имен внешних ключей моделей и создан файл первой миграции. Чтобы ее применить, необходимо выполнить команду:
alembic upgrade head
Будут созданы все таблицы из файла миграций.
- Запуск приложения - выполните команду:
uvicorn app.main:app
Сервер Uvicorn запустит приложение по адресу http://127.0.0.1:8000. Администрирование приложения может быть осуществлено через Swagger доступный по адресу http://127.0.0.1:8000/docs .
-
Остановить Uvicorn можно комбинацией клавиш Ctl-C.
-
Для запуска тестов выполните команду:
pytest --cov --cov-config=.coveragerc
В docker-контейнере (БД - PostgreSQL)
- Из корневой директории проекта выполните команду:
docker compose -f docker/docker-compose.yml up -d --build
Проект будет развернут в docker-контейнерах (db, web) по адресу http://localhost:8000. Администрирование приложения может быть осуществлено через Swagger доступный по адресу http://localhost:8000/docs .
- Остановить docker и удалить контейнеры можно командой из корневой директории проекта:
docker compose -f docker/docker-compose.yml down
Если также необходимо удалить том базы данных:
docker compose -f docker/docker-compose.yml down -v
- Для запуска тестов выполните команду:
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