Skip to content

Repository files navigation

Random Users API

Веб-приложение для получения и отображения случайных пользователей с использованием API randomuser.me.

Описание

Приложение предоставляет веб-интерфейс для загрузки и отображения информации о случайных пользователях. При старте сервера автоматически загружается 1000 случайных пользователей из API. Данные хранятся в базе данных и отображаются в табличном виде с возможностью пагинации.

Обоснование выбора технологий

Backend

  • FastAPI: Выбран как современный, быстрый фреймворк с отличной поддержкой асинхронности и автоматической документацией API. Позволяет эффективно обрабатывать большое количество запросов и предоставляет встроенную валидацию данных через Pydantic.
  • PostgreSQL: Выбрана как надежная реляционная БД с хорошей производительностью при работе с большими объемами данных. Поддерживает JSON-поля, что удобно для хранения дополнительной информации о пользователях.
  • SQLAlchemy: ORM для работы с базой данных, предоставляет удобный интерфейс для работы с данными и поддерживает асинхронные операции.
  • Alembic: Для управления миграциями базы данных, обеспечивает безопасное обновление схемы БД.

Frontend

  • HTML/CSS/JavaScript: Использованы базовые веб-технологии для создания простого и функционального интерфейса.
  • Bootstrap: Для быстрой разработки адаптивного интерфейса и стилизации таблицы.

Структура проекта

.
├── app/
│   ├── __init__.py
│   ├── main.py
│   ├── models.py
│   └── database.py
├── tests/
│   ├── __init__.py
│   ├── test_api.py
│   └── conftest.py
├── alembic/
│   ├── versions/
│   └── env.py
├── Dockerfile
├── docker-compose.yml
├── init.sh
├── requirements.txt
└── README.md

Установка и запуск

Требования

  • Docker
  • Docker Compose

Запуск приложения

  1. Клонируйте репозиторий:
git clone https://github.com/KruglovEgor/yadro_python
cd yadro_python
  1. Запустите приложение с помощью Docker Compose:
docker-compose up --build

Приложение будет доступно по адресу: http://localhost:8000

Автоматическая инициализация

При первом запуске:

  • Создается база данных PostgreSQL
  • Применяются миграции Alembic
  • Загружается 1000 случайных пользователей из API
  • Запускается веб-сервер

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

Запуск тестов

  1. Убедитесь, что контейнеры запущены:
docker-compose ps
  1. Запустите тесты:
docker-compose exec web pytest
  1. Для более подробного вывода:
docker-compose exec web pytest -v
  1. Для запуска конкретного теста:
docker-compose exec web pytest tests/test_api.py::test_read_root -v

Полезные команды для тестирования

  • Просмотр логов приложения:
docker-compose logs -f web
  • Просмотр логов базы данных:
docker-compose logs -f db
  • Проверка подключения к базе данных:
docker-compose exec db psql -U user -d random_users
  • Очистка всех данных (включая базу):
docker-compose down -v
  • Пересборка контейнеров (после изменения зависимостей):
docker-compose down
docker-compose build
docker-compose up -d

Возврат к нормальной работе после тестирования

После запуска тестов база данных содержит только тестовые данные. Чтобы вернуться к нормальной работе с реальными данными:

  1. Остановите контейнеры:
docker-compose down
  1. Удалите все данные (включая тестовую базу):
docker-compose down -v
  1. Запустите приложение заново:
docker-compose up -d

Это пересоздаст базу данных и загрузит 1000 реальных пользователей из API при старте приложения.

API Endpoints

  • GET / - Основная страница с формой для загрузки пользователей и таблицей
  • GET /{user_id} - Получение информации о конкретном пользователе
  • GET /random - Получение информации о случайном пользователе

Переменные окружения

  • DATABASE_URL - URL для подключения к базе данных PostgreSQL
  • PYTHONPATH - Путь к директории приложения

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages