- Метод: GET
- URL:
/api/products?type=***
- Описание: Запросы возвращают список товаров конкретного типа. Можно использовать фильтры по категории, цене и названию или получить товары по списку идентификаторов.
- Параметр type:
- тип продукта, который может быть
bouquets
,toys
илиpostcards
.
- тип продукта, который может быть
- Параметры запроса:
category
: строка (необязательный) - фильтр товаров по категории.minPrice
: число (необязательный) - фильтр товаров по минимальной цене.maxPrice
: число (необязательный) - фильтр товаров по максимальной цене. специфичных товаров.
- Пример запроса:
/api/products?type=bouquets
/api/products?type=toys
/api/products?type=postcards
- Фильтрация:
/api/products?category=toys&minPrice=500
- Список ID:
/api/products?list=1,2,3
- Метод: GET
- URL:
/api/products
- Описание: Запрос возвращает список всех продуктов. Можно получить товары по списку идентификаторов или названию (часть названия).
- Параметры запроса:
name
: строка (необязательный) - поиск товаров, содержащих указанные символы в названии.list
: строка (необязательный) - список ID товаров, разделённых запятыми, для получения специфичных товаров.
- Пример запроса:
- Все товары:
/api/products
- Список ID:
/api/products?list=1,2,3
- Список по совпадению названия:
/api/products?name=розы
- Все товары:
- Метод: POST
- URL:
/api/orders
- Описание: Запрос создаёт новый заказ с данными, предоставленными в теле запроса.
- Тело запроса:
{ "buyer": { "name": "Иван Иванов", "phone": "1234567890" }, "recipient": { "name": "Мария Петрова", "phone": "0987654321" }, "address": "ул. Советская, дом 10, кв 15", "paymentOnline": true, "deliveryDate": "2023-10-05", "deliveryTime": "с 9:00 до 12:00", "products": [ { "id": 1, "quantity": 2 }, { "id": 2, "quantity": 3 } ] }
curl -X POST http://localhost:3000/api/orders -H 'Content-Type: application/json' -d '{
"buyer": {"name": "Иван Иванов", "phone": "1234567890"},
"recipient": {"name": "Мария Петрова", "phone": "0987654321"},
"address": "ул. Советская, дом 10, г. Москва, Россия",
"paymentOnline": true,
"deliveryDate": "2023-10-05",
"deliveryTime": "с 9:00 до 12:00",
"products": [{"id": 1, "quantity": 2}, {"id": 2, "quantity": 3}],
"total":
- Параметры, помеченные как "необязательный", могут быть опущены в запросе.
- Все данные, включая номера телефонов и адреса, должны быть предоставлены в соответствии с требованиями формата данных.
- Endpoint:
POST /api/cart/register
- Description: Регистрирует новую корзину и возвращает уникальный ключ доступа (
accessKey
), который сохраняется в куках. - Response:
- 200 OK:
{ "accessKey": "unique-access-key", "message": "Existing cart key reused." }
- 200 OK:
- Endpoint:
GET /api/cart
- Description: Возвращает содержимое корзины для текущего ключа доступа, сохранённого в куках.
- Response:
- 200 OK:
{ "items": [ { "productId": 1, "quantity": 2 } ] }
- 401 Unauthorized:
{ "error": "Access denied" }
- 404 Not Found:
{ "error": "Cart not found" }
- 200 OK:
- Endpoint:
POST /api/cart/items
- Description: Добавляет товар в корзину, используя текущий ключ доступа. Требуется передать
productId
иquantity
. - Body:
{ "productId": 1, "quantity": 2 }
- Response:
- 200 OK:
{ "message": "Item added to cart", "cart": { "items": [ { "productId": 1, "quantity": 2 } ] } }
- 401 Unauthorized:
{ "error": "Access denied" }
- 404 Not Found:
{ "error": "Cart not found" }
- 200 OK:
-
Endpoint:
DELETE /api/cart/items
-
Description: Удаляет товар из корзины, используя текущий ключ доступа. Требуется передать
productId
-
Body:
{ "productId": 1 }
-
Response:
- 200 OK:
{ "message": "Item removed from cart", "cart": { "items": [] } }
- 401 Unauthorized:
{ "error": "Access denied" }
- 404 Not Found:
{ "error": "Product not found in cart" }
- 200 OK:
-
Notes
-
Убедитесь в корректной обработке куки, так как они используются для поддержания сессии корзины.
-
Все эндпоинты должны быть защищены и правильно проверяться, чтобы предотвратить несанкционированный доступ.
-