Основные таблицы: orders - таблица заказов, customers - таблица покупателей, items - товары, towns - справочник адресов.
- СУБД: PostgreSQL 16
- Средства разработки: DBeaver
- Инструменты для тестирования API: Postman
Рассмотрены следующие сценарии: просмотр витрины товаров, просмотр детального описания товара, добавление товара в корзину.
Инструмент Draw.io
Workflow пополнения баланса мобильного счета с использованием банковского приложения, установленного на смартфоне (BPMN 2.0)
Отображены основные этапы: авторизация в приложении, ввод ПИН-кода, ввод номера телефона и суммы, а также подтверждение транзакции. Также описаны альтернативные потоки: ошибка ввода ПИН-кода (3 попытки → блокировка), отмена операции на этапе ввода ПИН.
Инструмент StormBPMN
Просмотр PDF Workflow
Разработка REST API для реализации основных функций интернет-магазина: отображение витрины товаров, просмотр деталей товара и добавление товаров в корзину.
Details
Получение информации о витрине товаров
Данный эндпойнт позволяет запросить информацию для отображения витрины товаров.
| Метод | Путь |
|---|---|
| GET | /catalog |
| Наименование | Тип данных | Описание |
|---|---|---|
| name | string | наименование товара |
| production | string | наименование производителя |
| price | string | цена товара |
| img_src | string | ссылка на изображение товара |
| id | number | уникальный идентификатор товара |
Используя curl:
curl \
http://127.0.0.1:1234/v1/catalog
{
"catalog": [
{
"name": "Фигурка Эльвира",
"production": "Neca",
"price": "5000.0",
"img_src": "images/figures/neca/34679",
"id": 45678
},
{
"name": "Фигурка Кендимен",
"production": "Trick or Treat",
"price": "4700.0",
"img_src": "images/figures/trick_or_treat/89641",
"id": 75678
}
]
}
Details
Получение детальной информации о товаре
Данный эндпойнт позволяет запросить информацию для отображения детальной информации о товаре.
| Метод | Путь |
|---|---|
| GET | /details/item?id=:id |
| GET | /details/item /:id |
| Наименование | Тип данных | Значение по умолчанию | Обязательность | Описание |
|---|---|---|---|---|
| id | integer | - | + | уникальный идентификатор товара |
| Наименование | Тип данных | Описание |
|---|---|---|
| name | string | наименование товара |
| production | string | наименование производителя |
| price | string | цена товара |
| imgs_src | array | список ссылок на изображения товара |
| id | number | уникальный идентификатор товара |
| productType | string | тип продукта |
| size | string | размер товара |
| material | string | материал товара |
| modelNumber | string | наименование модели товара |
| description | string | описание товара |
Используя curl:
curl \
http://127.0.0.1:1234/v1/details/item?id=45678
Пример ответа:
{
"name": "Фигурка Эльвира",
"production": "Neca",
"price": "5000.0",
"imgs_src": [
"images/figures/neca/34679",
"images/figures/neca/34680",
"images/figures/neca/34681",
"images/figures/neca/34682",
"images/figures/neca/34683"
],
"id": 45678,
"productType": "Подвижная фигурка",
"size": "18 см",
"material": "Пластик, ткань",
"modelNumber": "NC1437",
"description": "В конце полнометражных приключений \"Эльвиры, повелительницы тьмы\", наша угарная героиня отыгрывает образ ныне экшн-пенсионеров, а тогда в 80-х звезд типа Арнольда и Сильвестра, вооружившись воинственной раскраской и мощной базукой - именно этот облик точнехонько воспроизвели NECA, уже выдавших идеальные версии фигурок Эльвиры.\n\n И тут без идеальности не обошлось, то же анатомически и пропорционально верное подвижное тело облачено в \"укороченный\" вариант тканевого платья, сменные лица все также превосходно скульптированы и окрашены цифровым образом, пышная прическа детализирована, ну а комплект содержит ту самую базуку и колдовской гримуар, который отлично будет смотреться и в руках других версий Эльвир"
}Details
Добавление товара в корзину
Этот эндпойнт позволяет добавить товар в корзину.
| Метод | Путь |
|---|---|
| POST | /cart |
| Наименование | Тип данных | Значение по умолчанию | Обязательность | Описание |
|---|---|---|---|---|
| cart_id | number | - | + | уникальный идентификатор корзины пользователя |
| item_id | number | - | + | уникальный идентификатор товара |
| quantity | number | 1 | - | количество единиц товара |
| Наименование | Тип данных | Описание |
|---|---|---|
| success | true/false | статус выполнения запроса |
| remains_of_item | number | количество, оставшихся доступных для заказа единиц данного товара |
Используя curl:
curl \
-X POST \
-d '{
"cart_id": 7601,
"item_id": 45678,
"quantity": 5
}'\
http://127.0.0.1:1234/v1/cart
Пример ответа:
{
"success": true,
"remains_of_item": 5
}
