Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
  • Loading branch information
antonkanevsky authored Sep 27, 2019
1 parent c1551ab commit 2fcc2ec
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,52 @@
# Простое 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
~~~
2. Устанавливаем данные для подключения к БД (PostgreSQL) в файле _config/parameters/db.yaml_.
3. Выполняем SQL скрипт _installer/db_schema.sql_ для накатывания схемы БД.
4. Для тестирования вполне подойдет встроенный в PHP локальный веб сервер. Для активации локального хоста выполнить команду:
~~~
php -S localhost:8000 -t public/
~~~

Описание API методов
------------
API содержит 4 эндпоинта:
1. Генерация стартового набора данных - создает сущности типа "Товар"
**POST /api/items/create**
2. Метод получения всех существующих товаров
**GET /api/items**
3. Создать заказ:
**POST /api/order/create**
Создает заказ в статусе "Новый".
4. Оплатить заказ
**POST /api/order/pay**

*Примечание:*
Для удобства тестирования в проекте есть файл для http клиента PostMan

0 comments on commit 2fcc2ec

Please sign in to comment.