- Создать файл
.envв корневой директории по примеру из репозитория - Из корневой директории запустить
docker compose up --build -d(в зависимости от версии докер композdocker-compose up --build -d) - По стандарту апи будет доступен по
http://localhost:44444, порт проброшен из контейнера
Описание: Получить список всех продуктов (кешируется)
curl --url "http://localhost:44444/api/v1/products" \
--request GET
Параметры запроса:
limit: int[опционально] ограничивает количество выданных запросов, стандарт -50, максимально -100offset: int[опционально] указывает оффсет для выданных запросов, стандарт -0
Ответ:
200ответ получен
Пример ответа:
{
"limit": 50,
"offset": 0,
"data": [
{
"id": 1,
"category_id": 1,
"name": "product"
}
]
}
Описание: Получить информацию о продукте по id
curl --url "http://localhost:44444/api/v1/products/1" \
--request GET
Ответ:
200если продукт найден404если продукт не найден
Пример ответа:
{
"id": 1,
"category_id": 1,
"name": "product"
}
Описание: Создать новый продукт
curl --url "http://localhost:44444/api/v1/products" \
--request POST \
--header "Content-Type: application/json" \
--data '{"name": "new_product", "category_id": 2}'
Ответ:
201продукт успешно создан
Пример ответа:
{
"id": 2,
"name": "new_product",
"category_id": 2
}
Описание: Обновить существующий продукт
curl --url "http://localhost:44444/api/v1/products/1" \
--request PUT \
--header "Content-Type: application/json" \
--data '{"name": "updated_product", "category_id": 3}'
Ответ:
200продукт успешно обновлён
Пример ответа:
{
"id": 1,
"name": "updated_product",
"category_id": 3
}
Описание: Удалить продукт по id
curl --url "http://localhost:44444/api/v1/products/1" \
--request DELETE
Ответ:
204продукт успешно удалён
Описание: Получить общую сумму продаж за период (по умолчанию за последние 180 дней)
curl --url "http://localhost:44444/api/v1/sales/total?start_date=2023-01-01&end_date=2023-06-30" \
--request GET
Параметры запроса:
start_date: str[опционально] дата начала периода (ISO формат)end_date: str[опционально] дата окончания периода (ISO формат)
Ответ:
200данные получены
Пример ответа:
{
"start_date": "2023-01-01",
"end_date": "2023-06-30",
"total": 50000
}
Описание: Получить топ-продукты по продажам за период
curl --url "http://localhost:44444/api/v1/sales/top-products?start_date=2023-01-01&end_date=2023-06-30&limit=5" \
--request GET
Параметры запроса:
start_date: str[опционально] дата начала периода (ISO формат)end_date: str[опционально] дата окончания периода (ISO формат)limit: int[опционально] количество топ-продуктов, стандарт -10
Ответ:
200данные получены
Пример ответа:
{
"start_date": "2023-01-01",
"end_date": "2023-06-30",
"limit": 5,
"data": [
{
"name": "product_1",
"sold_amount": 200
},
{
"name": "product_2",
"sold_amount": 150
}
]
}