Микросервис wishlist
Микросервис wishlist служит для управления списком избранных товаров пользователя на сайте интернет-магазина. С его помощью можно просматривать, добавлять, редактировать и удалять товары из списка избранного.
Доступ к сервису предоставляется по запросу.
Логика работы
В работе микросервиса участвует сущность Wish, которая содержит данные об избранном покупателя: id избранного, id покупателя и артикул варианта товара, который был добавлен в избранное.
Аутентификация
Для работы с микросервисом аутентификация не требуется.
Service context path
/api/wishlist/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"POSTGRES_DATABASE": "wishlist",
"POSTGRES_MIGRATION_USER": "wishlist_migration",
"POSTGRES_PORT": "5432",
"POSTGRES_USER": "wishlist_user"
}
}
// пример взят с тестового стенда
{
"env": {
"OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
"OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
"OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
"POSTGRES_HOST": "хост_бд,
"POSTGRES_MIGRATION_PASSWORD": "пароль",
"POSTGRES_PASSWORD": "пароль_бд"
}
}
Методы микросервиса 
- Добавление товара в избранное - POST запрос, /v1/wishes
Отсутствуют.
{
"customerId": "227485734292973074",
"articleId": "1021531DC"
}
{
"id": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"customerId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000002DC",
"addedAt": "2025-04-07T20:47:12.338Z",
"metadata": {
"priority": "string",
"notifyStockAvailability": true
}
}
- 200 - операция выполнена успешно, товар добавлен в избранное
- 400 - ошибка, не удалось добавить товар в избранное
- 409 - ошибка, товар с таким ID уже добавлен в избранное
- Получение страницы избранного - POST запрос, /v1/wishes/page
Отсутствуют.
{
"sort": [
{
"sortBy": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 10,
"filter": {
"customerId": "227485734292973074"
}
}
{
"content": [
{
"id": "29aa7aed-2b49-497c-bae0-b3a75418ffac",
"customerId": "227485734292973074",
"articleId": "1021612DC"
},
{
"id": "4e119fc1-7e51-4360-96f0-3d24933e952b",
"customerId": "227485734292973074",
"articleId": "1021531DC"
},
{
"id": "5d7e2931-1257-4788-afc4-15bbcf5d5c61",
"customerId": "227485734292973074",
"articleId": "1021617DC"
}
],
"pageable": {
"sort": {
"unsorted": false,
"sorted": true,
"empty": false
},
"pageNumber": 0,
"pageSize": 10,
"offset": 0,
"paged": true,
"unpaged": false
},
"totalPages": 1,
"totalElements": 3,
"last": true,
"first": true,
"numberOfElements": 3,
"sort": {
"unsorted": false,
"sorted": true,
"empty": false
},
"size": 10,
"number": 0,
"empty": false
}
200 - операция выполнена успешно, получена страница избранного
- Получение списка избранного - POST запрос, /v1/wishes/list
Отсутствуют.
{
"customerId": "227485734292973074"
}
[
{
"id": "29aa7aed-2b49-497c-bae0-b3a75418ffac",
"customerId": "227485734292973074",
"articleId": "1021612DC"
},
{
"id": "5d7e2931-1257-4788-afc4-15bbcf5d5c61",
"customerId": "227485734292973074",
"articleId": "1021617DC"
},
{
"id": "4e119fc1-7e51-4360-96f0-3d24933e952b",
"customerId": "227485734292973074",
"articleId": "1021531DC"
}
]
200 - операция выполнена успешно, получен список избранного
- Получение избранного по ID - GET запрос, /v1/wishes/{id}
id - path-параметр, обязательный: уникальный идентификатор Избранного
{
"id": "29aa7aed-2b49-497c-bae0-b3a75418ffac",
"customerId": "227485734292973074",
"articleId": "1021612DC"
}
- 200 - операция выполнена успешно, получены данные запрашиваемого избранного
- 404 - ошибка, избранное с таким ID не найдено
- Удаление списка Избранного по ID - DELETE запрос, /v1/wishes/{id}
- customerId - параметр тела запроса, обязательный: уникальный идентификатор пользователя;
- articleId - параметр тела запроса, обязательный: код товара.
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, избранное удалено
- 404 - ошибка, избранное с таким ID не найдено
- Обновление избранного - PATCH запрос, /v1/wishes/{id}
id - path-параметр, обязательный: уникальный идентификатор Избранного
{
"customerId":
"227485734292973074",
"articleId": "1019728DC"
}
{
"id": "29aa7aed-2b49-497c-bae0-b3a75418ffac",
"customerId": "227485734292973074",
"articleId": "1019728DC"
}
- 200 - операция выполнена успешно, избранное обновлено
- 400 - ошибка, не удалось обновить избранное
- Получение количества товаров в избранном по ID пользователя - GET запрос, /v1/wishes/summary
- customerId - параметр тела запроса, обязательный: уникальный идентификатор пользователя;
- lastAddedItemsCount - параметр тела запроса, обязательный: число последних добавленных товаров, уникальные идентификаторы которых необходимо вернуть в ответе.
{
"customerId":"string",
"lastAddedItemsCount":3
}
{
"count": 12,
"lastAddedItems": [
"32132143DC",
"32132144DC",
"32132145DC"
]
}
- 200 - операция выполнена успешно, получено количество товаров в избранном
- 400 - ошибка, невалидные параметры запроса (например, lastAddedItemsCount < 0)
- 404 - ошибка, Избранное не найдено
- Удаление товара из Избранного по его ID - DELETE запрос, /v1/wishes
- customerId - параметр тела запроса, обязательный: уникальный идентификатор пользователя;
- articleId - параметр тела запроса, обязательный: код товара.
{
"customerId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
"articleId": "1000002DC"
}
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, товар удален из избранного
- 400 - ошибка, невалидные параметры
- 404 - ошибка, товар с указанным кодом не найден