Skip to content

antonkanevsky/simple-rest-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Простое REST API приложение

Приложение работает с сущностями заказа и товаров. Предоставляет публичное API для взаимодействия.

Технические требования к окружению

  • PHP - не ниже версии 7.1
  • СУБД - PostgreSQL 9.6

Особенности реализации

Инстанс приложения представлен классом Application, которое обрабатывает HTTP запрос к API. Классы сердцевины приложения (микрофреймворка) расположены в папке src/Core. Каркас приложения стандартный MVC, реализованный с использованием минимально необходимых для этого компонентов Symfony. Каждый контролер и сервисы, которые он использует, инициализируются объектом DI контейнера, который доступен приложению. Все обращения к БД происходят через прослойку Repository (назвал так по аналогии со структурой ORM Doctrine 2). Каждый репозиторий это по своей сути Mapper конкретной сущности к БД. Модели лежат в src/Entity.

Слой взаимодействия с БД самописный с использованием PDO, я не задавался целью использовать какую либо ORM для универсальности. Все запросы к БД безопасные, т.к. используется подход Prepared statements с привязкой параметров к запросу. Вся бизнес логика вынесена в сервисы.

Для простоты слой аутентификации пользователей отсутствует.

Все 4 метода API покрыты тестами с использованием php unit, сервисы отдельно. В тестовом окружении идут обращения к локальной файловой БД SQLite 3.

Инструкция по разворачиванию проекта

  1. После клонирования репозитория подтягиваем зависимости проекта:
composer install
  1. Устанавливаем данные для подключения к БД (PostgreSQL) в файле config/parameters/db.yaml.
  2. Выполняем SQL скрипт installer/db_schema.sql для накатывания схемы БД.
  3. Для тестирования вполне подойдет встроенный в PHP локальный веб сервер. Для активации локального хоста выполнить команду:
php -S localhost:8000 -t public/

API DOC к методам

HTTP метод PATH Описание Параметры Пример запроса Пример ответа
1 POST /api/items/create Создание товаров
2 GET /api/items Получение всех товаров
3 POST /api/order/create Создание заказа. Возвращает id созданного заказа "itemIds" - Идентификаторы товаров { "itemIds": [1, 2] } { "id": 1 }
4 POST /api/order/pay Оплата заказа "id" - Идентификатор заказа, "amount" - Сумма оплаты { "id": 1, "amount": "250.00" } { "success": true }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages