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

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

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

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

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

При обращении к микросервису через API в запросах необходимо в заголовке Authorization указывать токен: Authorization: Bearer <токен>.

/api/wishlist-orchestration/

Параметры конфигурации указываются в Vault.

Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm"

  }
}



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

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


{

  "env": {
    "OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
    "OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
    "OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel"
  }
}



Copy-icon

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

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

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

Request body sample

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


Copy-icon
Response sample

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

Response codes
  • 200 - операция выполнена успешно, товар добавлен в избранное
  • 400 - ошибка, не удалось добавить товар в избранное
  • Получение страницы избранных товаров пользователя - POST запрос, /v1/wishes/my/page
Request parameters

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

Request body sample

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

Copy-icon
Response sample

{
  "content": [
    {
      "id": "1019728DC",
      "productId": "1019727DC",
      "name": "Бутылка для воды",
      "description": "",
      "assets": [
        {
          "id": "dbd7ff30-4241-4ba4-be9e-7a681d7f7e51",
          "media": {
            "url": "master/catalog/images/1707916795224-1882559365.png",
            "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1707916795224-1882559365.png",
            "name": "1690988018921-1882559365.png",
            "type": "PHOTO",
            "size": 291942,
            "resolution": "427x427 px",
            "createdDate": "2024-02-14T16:20:04.169"
          },
          "title": "1690988018921-1882559365",
          "altAttr": "1690988018921-1882559365",
          "description": "",
          "sign": "",
          "tags": [
            ""
          ]
        },
        {
          "id": "f1883698-e089-47b3-b911-498a9aa41614",
          "media": {
            "url": "master/catalog/images/1707916794081-1882559365.png",
            "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1707916794081-1882559365.png",
            "name": "1690988018746-1882559365.png",
            "type": "PHOTO",
            "size": 37009,
            "resolution": "383x383 px",
            "createdDate": "2024-02-14T16:20:04.164"
          },
          "title": "1690988018746-1882559365",
          "altAttr": "1690988018746-1882559365",
          "description": "",
          "sign": "",
          "tags": [
            ""
          ]
        },
        {
          "id": "a36edfee-fd77-4ecc-904b-b583f8b9a098",
          "media": {
            "url": "master/catalog/images/1720185232780-1882559365.webp",
            "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1720185232780-1882559365.webp",
            "name": "11500_11.webp",
            "type": "PHOTO",
            "size": 537688,
            "resolution": "929x1392 px",
            "createdDate": "2024-07-05T16:13:56.475"
          },
          "title": "11500_11",
          "altAttr": "11500_11",
          "description": "",
          "sign": "",
          "tags": [
            ""
          ]
        }
      ],
      "attributes": [],
      "status": 300,
      "prices": {
        "02d3eb94-8d0c-4e21-a952-db8684a1534d": {
          "unitPrice": 2500,
          "discountUnitPrice": 2500
        }
      },
      "orderable": true
    },
    {
      "id": "1021531DC",
      "productId": "1021528DC",
      "name": "Термос",
      "description": "",
      "assets": [
        {
          "id": "dbd7ff30-4241-4ba4-be9e-7a681d7f7e51",
          "media": {
            "url": "master/catalog/images/1707916795224-1882559365.png",
            "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1707916795224-1882559365.png",
            "name": "1690988018921-1882559365.png",
            "type": "PHOTO",
            "size": 291942,
            "resolution": "427x427 px",
            "createdDate": "2024-02-14T16:20:04.169"
          },
          "title": "1690988018921-1882559365",
          "altAttr": "1690988018921-1882559365",
          "description": "",
          "sign": "",
          "tags": [
            ""
          ]
        }
      ],
      "attributes": [
        {
          "featureId": "f1006659DC",
          "name": "Финиш",
          "indexable": true,
          "value": "классный"
        }
      ],
      "status": 300,
      "prices": {
        "02d3eb94-8d0c-4e21-a952-db8684a1534d": {
          "unitPrice": 123,
          "discountUnitPrice": 123
        }
      },
      "orderable": true
    },
    {
      "id": "1021617DC",
      "productId": "1021616DC",
      "name": "Шорты джинсовые Levi's® ORIGINAL голубые",
      "description": "",
      "assets": [
        {
          "id": "a34cf313-3058-48ff-9109-faa07416e74c",
          "media": {
            "url": "master/catalog/images/1713437908760-1882559365.jpg",
            "absoluteUrl": "https://test-ecom-media.digitalchief.tech/master/catalog/images/1713437908760-1882559365.jpg",
            "name": "photo_2024-01-10_19-26-00.jpg",
            "type": "PHOTO",
            "size": 228232,
            "resolution": "900x1200 px",
            "createdDate": "2024-04-18T13:58:30.587"
          },
          "title": "photo_2024-01-10_19-26-00",
          "altAttr": "photo_2024-01-10_19-26-00",
          "description": "",
          "sign": "",
          "tags": [
            ""
          ]
        }
      ],
      "attributes": [
        {
          "featureId": "f1007509DC",
          "name": "Расцветка",
          "indexable": true,
          "value": "голубой"
        }
      ],
      "status": 300,
      "prices": {
        "02d3eb94-8d0c-4e21-a952-db8684a1534d": {
          "unitPrice": 2500,
          "discountUnitPrice": 2500
        }
      },
      "orderable": true
    }
  ],
  "pageable": "INSTANCE",
  "last": true,
  "totalPages": 1,
  "totalElements": 3,
  "first": true,
  "numberOfElements": 3,
  "sort": {
    "unsorted": true,
    "sorted": false,
    "empty": true
  },
  "size": 3,
  "number": 0,
  "empty": false
}
Copy-icon
Response codes

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

  • Получение списка артикулов избранных товаров пользователя - POST запрос, /v1/wishes/my/list
Request parameters

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

Request body sample

Отсутствует.

Response sample

[
  "1021617DC",
  "1019728DC",
  "1021531DC"
]
Copy-icon
Response codes

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

  • Удаление товара из списка избранного - DELETE запрос, /v1/wishes/my/{articleId}
Request parameters

articleId - path-параметр, обязательный: артикул варианта товара, который нужно удалить из списка избранного


Copy-icon
Response sample

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

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