Skip to content

mpi84/api-json-test-app

Repository files navigation

Example App with Json Api

Описание

Демонстрационная реализация json API на symfony Используются следующие сущности:

  • пользователи (AppUser)
  • клиенты (Client)
  • счета (Account)

У пользователя (AppUser) может быть роль или админа (ROLE_ADMIN), или менеджера (ROLE_MANAGER). Админ может видеть всех пользователей, менеджер только пользователей с ролью ROLE_MANAGER. Только админ может создавать, удалять пользователей и изменять параметры пользователей. У менеджеров есть персональные клиенты (Client), которых они могут просматривать, создавать, изменять и удалять. Админ может делать тоже самое, но с любым клиентом. У каждого клиента есть счета (Account), которых может быть максимум 3 с предопределёнными типами: rub, usd, eur. Менеджер может просматривать, создавать, изменять и удалять счета только своих клиентов. Админ может делать тоже самое, но с счётами любого клиента. Дополнительно есть метод ConvertCurrency, который позволяет конвертировать деньги с одного счёт в другой, обязательные условия для этого:

  • оба счёта с нужным типом должны существовать
  • сумма конвертация не должна превышать суммы исходного

Апи методы сформированы по логике CRUD. Все методы кроме логина требует JWT токен для авторизации

Используется:

  • Symfony 7 (PHP 8.3)
  • PostgreSQL 16
  • Nginx 1.25

Порядок установки

  1. Разворачиваем тестовое окружение через докер, используя конфиг docker-compose.yml:

    • make up билдим и запускаем сервисы (алиас для docker-compose up -d --build)
    • make attach-php заходим в контейнер php (алиас для docker-compose exec php bash)
  2. Копируем .env.local.example в .env.local

  3. Внутри контейнера устанавливем зависимости, создаём бд, миграции и загружаем тестовые данные

    • внутри контейнера php запускаем make set-up-all (алиас для make deps jwt schema migration load-fixtures)
    • make jwt для генерации ключей (алиас lexik:jwt:generate-keypair)

Тесты

Запуск всех тестов make test, только unit make test-u, только функциональные make test-f

Документация по API

Используется NelmioApiDocBundle (OpenApi).

Адрес доументации /api/doc

Описание всех make команд

  • make up - на хосте сборка и запуск всех сервисов из docker-compose.yml
  • make stop - на хосте остановка всех сервисов
  • make attach-php - на хосте вход в php контейнер
  • make lint-phpcs - запуск линтера (PHP_CodeSniffer)
  • make test - запуск всех тестов
  • make test-u - запуск только unit тестов
  • make test-f - запуск только функциональных тестов
  • make schema - создание основной бд и тестовой
  • make deps - установка зависимостей через composer
  • make jwt - генерация JWT ключей
  • make load-fixtures - загрузка фикстур
  • make migration - создание миграции и миграция в бд

Если нет php и make на хосте, то делаем всё это внутри контейнера php кроме команд (up, stop, attach-php)

About

Example APP with Json API

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages