Микросервис wishlist

В статье описываются функции, логика работы, конфигурация и методы микросервиса wishlist.

Микросервис wishlist служит для управления списком избранных товаров пользователя на сайте интернет-магазина. С его помощью можно просматривать, добавлять, редактировать и удалять товары из списка избранного.

Доступ к сервису предоставляется по запросу.

В работе микросервиса участвует сущность Wish, которая содержит данные об избранном покупателя: id избранного, id покупателя и артикул варианта товара, который был добавлен в избранное.

Для работы с микросервисом аутентификация не требуется.

/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"

  }
}


Copy-icon
Указываемые на каждом отдельном стенде

// пример взят с тестового стенда


{
  "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": "пароль_бд"
  }
}




Copy-icon

Методы микросервиса Copy-icon

  • Добавление товара в избранное - POST запрос, /v1/wishes
Request parameters

Отсутствуют.

Request body sample

{
  "customerId": "227485734292973074",
  "articleId": "1021531DC"
}

Copy-icon
Response sample
{
  "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
  }
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно, товар добавлен в избранное
  • 400 - ошибка, не удалось добавить товар в избранное
  • 409 - ошибка, товар с таким ID уже добавлен в избранное
  • Получение страницы избранного - POST запрос, /v1/wishes/page
Request parameters

Отсутствуют.

Request body sample

{
  "sort": [
    {
      "sortBy": "id",
      "direction": "ASC"
    }
  ],
  "page": 0,
  "size": 10,
  "filter": {
    "customerId": "227485734292973074"
  }
}

Copy-icon
Response sample
{
                      "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
                      }
Copy-icon
Response codes

200 - операция выполнена успешно, получена страница избранного

  • Получение списка избранного - POST запрос, /v1/wishes/list
Request parameters

Отсутствуют.

Request body sample

{
  "customerId": "227485734292973074"
}

Copy-icon
Response sample
[
                      {
                      "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"
                      }
                      ]
Copy-icon
Response codes

200 - операция выполнена успешно, получен список избранного

  • Получение избранного по ID - GET запрос, /v1/wishes/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор Избранного

Response sample

{
                      "id": "29aa7aed-2b49-497c-bae0-b3a75418ffac",
                      "customerId": "227485734292973074",
                      "articleId": "1021612DC"
                      }
Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные запрашиваемого избранного
  • 404 - ошибка, избранное с таким ID не найдено
  • Удаление списка Избранного по ID - DELETE запрос, /v1/wishes/{id}
Request parameters
  • customerId - параметр тела запроса, обязательный: уникальный идентификатор пользователя;
  • articleId - параметр тела запроса, обязательный: код товара.
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes
  • 204 - операция выполнена успешно, избранное удалено
  • 404 - ошибка, избранное с таким ID не найдено
  • Обновление избранного - PATCH запрос, /v1/wishes/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор Избранного

Request body sample

{
  "customerId": "227485734292973074",
  "articleId": "1019728DC"
}

Copy-icon
Response sample
{
                      "id": "29aa7aed-2b49-497c-bae0-b3a75418ffac",
                      "customerId": "227485734292973074",
                      "articleId": "1019728DC"
                      }
Copy-icon
Response codes
  • 200 - операция выполнена успешно, избранное обновлено
  • 400 - ошибка, не удалось обновить избранное
  • Получение количества товаров в избранном по ID пользователя - GET запрос, /v1/wishes/summary
Request parameters
  • customerId - параметр тела запроса, обязательный: уникальный идентификатор пользователя;
  • lastAddedItemsCount - параметр тела запроса, обязательный: число последних добавленных товаров, уникальные идентификаторы которых необходимо вернуть в ответе. 
Request body sample

{

   "customerId":"string",
   "lastAddedItemsCount":3

}

Copy-icon
Response sample
{
  "count": 12,
  "lastAddedItems": [
    "32132143DC",
    "32132144DC",
    "32132145DC"
  ]
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно, получено количество товаров в избранном
  • 400 - ошибка, невалидные параметры запроса (например, lastAddedItemsCount < 0)
  • 404 - ошибка, Избранное не найдено
  • Удаление товара из Избранного по его ID - DELETE запрос, /v1/wishes
Request parameters
  • customerId - параметр тела запроса, обязательный: уникальный идентификатор пользователя;
  • articleId - параметр тела запроса, обязательный: код товара.
Request body sample

{
  "customerId": "5dc618af-af49-4adc-bccd-4d17aeff7526",
  "articleId": "1000002DC"
}

Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes
  • 204 - операция выполнена успешно, товар удален из избранного
  • 400 - ошибка, невалидные параметры
  • 404 - ошибка, товар с указанным кодом не найден