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

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

Микросервис region предоставляет функциональность для управления регионами (получение списка, создание и редактирование регионов).

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

В работе микросервиса участвует сущность Регион (Region), которая содержит данные географических зон, куда могут быть доставлены товары интернет-магазина, а именно: уникальный идентификатор, название, уровень региона, и др.

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

Для обращения к сервису у пользователя должна быть роль Admin и/или Admin_Settings.

Подробнее о ролях можно узнать здесь.

Service context path

/api/region/

Настройки и параметры конфигурации

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

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

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "LOGGING_LEVEL": "уровень_логирования",
    "POSTGRES_DATABASE": "region",
    "POSTGRES_MIGRATION_USER": "region_migration",
    "POSTGRES_PORT": "5432",
    "POSTGRES_USER": "region_user",
    "SERVER_PORT": "порт_сервера"
  }
}

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

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


{
  "env": {

    "OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
    "OAUTH_ECOM_ISSUER_URI": "url_ECOM_OAuth",
    "OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
    "OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
    "POSTGRES_HOST": "адрес_хоста",
    "POSTGRES_MIGRATION_PASSWORD": "пароль",
    "POSTGRES_PASSWORD": "пароль"
  }
}


Copy-icon

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

  • Получение отфильтрованного списка регионов - GET запрос, /v1/regions
Request parameters

page - query-параметр: номер страницы
size - query-параметр: количество регионов на странице
sort - query-параметр: сортировка регионов на странице
name - query-параметр: название региона
level - query-параметр: уровень региона
default - query-параметр: флаг, является ли регион регионом по умолчанию

Copy-icon
Response sample

[
  {
    "id": "ad9f4c8e-9fc0-4393-9339-17a2c1ce66251",
    "name": "г. Воронеж 2",
    "headId": "93a877db-9250-420a-ba58-aa9cd68ee180",
    "level": 3,
    "defaultRegion": true,
    "inferiors": []
  },
  {
    "id": "ad9f4c8e-9fc0-4393-9339-17a2c1ce6625",
    "name": "г. Воронеж",
    "headId": "93a877db-9250-420a-ba58-aa9cd68ee180",
    "level": 3,
    "defaultRegion": true,
    "inferiors": []
  },
  {
    "id": "1ba76b28-1d68-4f74-81b0-0fb3cfcf5699",
    "name": "Москва (за пределами МКАД)",
    "headId": "584c39b0-763e-40b8-89cb-3134c0c25932",
    "level": 3,
    "defaultRegion": false,
    "inferiors": []
  },
  {
    "id": "2dc99536-9423-4b7a-ac01-64ebd0950177",
    "name": "Москва (в пределах МКАД)",
    "headId": "584c39b0-763e-40b8-89cb-3134c0c25932",
    "level": 3,
    "defaultRegion": false,
    "inferiors": []
  },
  {
    "id": "aj8f90cv-f88d-elsi-ug4h-euv7zhw49j52",
    "name": "г. Борисоглебск",
    "headId": "93a877db-9250-420a-ba58-aa9cd68ee180",
    "level": 3,
    "defaultRegion": false,
    "inferiors": []
  }
]

Copy-icon
Response codes

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

  • Загрузка списка регионов - PUT запрос, /v1/regions/list
Request body sample

[
  {
    "id": "4c4c0574-5c5e-4a64-8809-3194afaf4dc0",
    "name": "г. Ржев",
    "headId": "6bee3c5d-3fff-4e86-9715-e4a2e2938053",
    "level": 1,
    "defaultRegion": false,
    "inferiors": []
  },
  {
    "id": "10d16ca9-1012-4a62-8dd9-c306005f8d08",
    "name": "г. Кимры",
    "headId": "6bee3c5d-3fff-4e86-9715-e4a2e2938053",
    "level": 1,
    "defaultRegion": false,
    "inferiors": []
  },
  {
    "id": "c70c601d-6261-4126-b2e8-0b75500583ba",
    "name": "г. Тверь",
    "headId": "6bee3c5d-3fff-4e86-9715-e4a2e2938053",
    "level": 1,
    "defaultRegion": false,
    "inferiors": []
  }
]

Copy-icon
Response sample

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

Response codes
  • 202 - операция выполнена успешно, список регионов загружен
  • 204 - ошибка, no content
  • Получение иерархии регионов - GET запрос, /v1/regions/hierarchy
Request parameters

name - query-параметр: название региона для фильтрации иерархии

Copy-icon
Response sample

[
    {
        "id": "f3a7a81a-dd1d-4966-b666-55221e881131",
        "name": "Россия",
        "level": 1,
        "defaultRegion": false,
        "inferiors": [
            {
                "id": "584c39b0-763e-40b8-89cb-3134c0c25932",
                "name": "г. Москва",
                "headId": "f3a7a81a-dd1d-4966-b666-55221e881131",
                "level": 2,
                "defaultRegion": false,
                "inferiors": [
                    {
                        "id": "2dc99536-9423-4b7a-ac01-64ebd0950177",
                        "name": "Москва (в пределах МКАД)",
                        "headId": "584c39b0-763e-40b8-89cb-3134c0c25932",
                        "level": 3,
                        "defaultRegion": false,
                        "inferiors": []
                    },
                    {
                        "id": "1ba76b28-1d68-4f74-81b0-0fb3cfcf5699",
                        "name": "Москва (за пределами МКАД)",
                        "headId": "584c39b0-763e-40b8-89cb-3134c0c25932",
                        "level": 3,
                        "defaultRegion": false,
                        "inferiors": []
                    }
                ]
            }
        ]
    }
]

Copy-icon
Response codes

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

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

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

Copy-icon
Response sample

{
    "id": "1ba76b28-1d68-4f74-81b0-0fb3cfcf5699",
    "name": "Москва (за пределами МКАД)",
    "headId": "584c39b0-763e-40b8-89cb-3134c0c25932",
    "level": 3,
    "defaultRegion": false,
    "inferiors": []
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные региона
  • 404 - ошибка, регион не найден
  • Создание региона - POST запрос, /v1/regions
Request body sample

{
  "name": "Нововоронеж",
  "headId": "93a877db-9250-420a-ba58-aa9cd68ee180",
  "level": 3,
  "defaultRegion": false
}

Copy-icon
Response sample

{
    "id": "9d7fda2e-5460-4356-98a9-53aa8a3f5a4a",
    "name": "Нововоронеж",
    "headId": "93a877db-9250-420a-ba58-aa9cd68ee180",
    "level": 3,
    "defaultRegion": false,
    "inferiors": []
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, регион создан
  • 400 - ошибка, невалидные данные
  • Обновление региона - PATCH запрос, /v1/regions/{id}
Request parameters

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

Copy-icon
Request body sample

{
    "id": "9d7fda2e-5460-4356-98a9-53aa8a3f5a4a",
    "name": "г.Нововоронеж"
}

Copy-icon
Response sample

{
    "id": "9d7fda2e-5460-4356-98a9-53aa8a3f5a4a",
    "name": "г.Нововоронеж",
    "headId": "93a877db-9250-420a-ba58-aa9cd68ee180",
    "level": 3,
    "defaultRegion": false,
    "inferiors": []
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно
  • 400 - ошибка, невалидные данные