Skip to content

fikstt2/testAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание Backend Python

Асинхронный REST API, построенный на Sanic, SQLAlchemy и PostgreSQL.

Возможности

  • Аутентификация: Вход для пользователей и администраторов на основе JWT.
  • Управление пользователями: CRUD-операции для администраторов.
  • Счета и платежи: Отслеживание баланса и история транзакций.
  • Webhook: Безопасная обработка платежей с проверкой подписи SHA256 и идемпотентностью.

Технологический стек

  • Фреймворк: Sanic
  • ORM: SQLAlchemy 2.0 (Async)
  • База данных: PostgreSQL
  • Контейнеризация: Docker & Docker Compose
  • Миграции: Alembic

Установка и настройка

Использование Docker (Рекомендуется)

  1. Убедитесь, что у вас установлены Docker и Docker Compose.
  2. Клонируйте репозиторий и перейдите в корневой каталог.
  3. Запустите:
    docker compose up --build
  4. API будет доступно по адресу http://localhost:8000.

Локальный запуск (Вручную)

  1. Установите зависимости:
    pip install -r requirements.txt
  2. Настройте переменные окружения в файле .env (необходимые ключи см. в docker-compose.yml).
  3. Запустите миграции:
    alembic upgrade head
  4. Запустите сервер:
    python -m app.main

Тестовые аккаунты (Начальные данные)

Пользователь

  • Email: user@example.com
  • Пароль: user123

Администратор

  • Email: admin@example.com
  • Пароль: admin123

Конечные точки API (Endpoints)

Аутентификация (Auth)

  • POST /auth/login/user: Токен доступа для пользователя.
  • POST /auth/login/admin: Токен доступа для администратора.

Пользователь (User)

  • GET /user/me: Профиль текущего пользователя.
  • GET /user/accounts: Список счетов и балансов.
  • GET /user/payments: Список транзакций.

Администратор (Admin)

  • GET /admin/users: Список всех пользователей и их счетов.
  • POST /admin/users: Создать нового пользователя.
  • PATCH /admin/users/<id>: Обновить данные пользователя.
  • DELETE /admin/users/<id>: Удалить пользователя.

Webhook

  • POST /webhook/payment: Обработка внешнего платежа.
    • Обязательные поля: transaction_id, account_id, user_id, amount, signature.
    • Подпись (Signature): SHA256({account_id}{amount_with_2_decimals}{transaction_id}{user_id}{secret_key})
    • Пример суммы: 100.00

Проверка

  • Используйте Postman или curl для тестирования конечных точек.
  • Убедитесь, что заголовок Authorization: Bearer <token> включен для защищенных маршрутов.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages