Микросервис load-template

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

Микросервис load-template служит для управления шаблонами файлов экспорта (быстрая кастомизация содержимого выгрузки).

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

Логика работы

В работе микросервиса используется сущность Template, которая содержит структуру шаблона, его формат (xml/csv) и название.

Аутентификация

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

Service context path

/api/load-template/

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

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

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

По умолчанию

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

    "SPRING_DATA_MONGODB_DATABASE": "название_бд",
    "SPRING_DATA_MONGODB_PORT": "порт_бд",
    "SPRING_DATA_MONGODB_USERNAME": "юзернейм_для_бд"
  }
}


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

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

{
  "env": {

   "OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
    "OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
    "OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel"
    "SPRING_DATA_MONGODB_HOST": "хост_бд",
    "SPRING_DATA_MONGODB_PASSWORD": "пароль_для_бд"
  }
}


Copy-icon

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

  • Получение страницы со списком шаблонов (с возможностью пагинации, фильтрации и сортировки) - GET запрос, /v1/templates/page
Request parameters

id - query-параметр, необязательный: идентификатор шаблона
name - query-параметр, необязательный: имя шаблона
page - query-параметр: номер страницы с шаблонами
size - query-параметр: размер страницы с шаблонами
sort - query-параметр: сортировка шаблонов на странице

Copy-icon
Response sample

{
    "content": [
        {
            "id": "443cbf41-ab1c-4360-a030-346327ab9fe2",
            "name": "RegionTemplate",
            "format": "csv",
            "tableData": {
                "sheets": [
                    {
                        "name": "sheet 1",
                        "table": {
                            "name": "Region",
                            "columns": [
                                {
                                    "title": "ID региона",
                                    "propertyName": "id",
                                    "order": 1,
                                    "enable": true,
                                    "width": 3000,
                                    "defaultValue": "string",
                                    "dateTimeFormat": "string"
                                },
                                {
                                    "title": "Название региона",
                                    "propertyName": "name",
                                    "order": 3,
                                    "enable": true,
                                    "width": 3000,
                                    "defaultValue": "string",
                                    "dateTimeFormat": "string"
                                },
                                {
                                    "title": "Регион по умолчанию",
                                    "propertyName": "defaultRegion",
                                    "order": 4,
                                    "enable": true,
                                    "width": 3000,
                                    "defaultValue": "string",
                                    "dateTimeFormat": "string"
                                },
                                {
                                    "title": "Id родительского региона",
                                    "propertyName": "headId",
                                    "order": 2,
                                    "enable": true,
                                    "width": 3000,
                                    "defaultValue": "string",
                                    "dateTimeFormat": "string"
                                },
                                {
                                    "title": "Уровень вложенности",
                                    "propertyName": "level",
                                    "order": 5,
                                    "enable": true,
                                    "width": 3000,
                                    "defaultValue": "string",
                                    "dateTimeFormat": "string"
                                }
                            ]
                        }
                    }
                ]
            }
        }
    ],
    "pageable": {
        "sort": {
            "sorted": true,
            "unsorted": false,
            "empty": false
        },
        "pageNumber": 0,
        "pageSize": 5,
        "offset": 0,
        "paged": true,
        "unpaged": false
    },
    "last": true,
    "totalPages": 1,
    "totalElements": 1,
    "first": true,
    "numberOfElements": 1,
    "sort": {
        "sorted": true,
        "unsorted": false,
        "empty": false
    },
    "size": 5,
    "number": 0,
    "empty": false
}

Copy-icon
Response codes

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

  • Получение списка шаблонов - POST запрос, /v1/templates/list
Request body sample

{
    "name": "RegionTemplate"
}

Copy-icon
Response sample

[
    {
        "id": "443cbf41-ab1c-4360-a030-346327ab9fe2",
        "name": "RegionTemplate",
        "format": "csv",
        "tableData": {
            "sheets": [
                {
                    "name": "sheet 1",
                    "table": {
                        "name": "Region",
                        "columns": [
                            {
                                "title": "ID региона",
                                "propertyName": "id",
                                "order": 1,
                                "enable": true,
                                "width": 3000,
                                "defaultValue": "string",
                                "dateTimeFormat": "string"
                            },
                            {
                                "title": "Название региона",
                                "propertyName": "name",
                                "order": 3,
                                "enable": true,
                                "width": 3000,
                                "defaultValue": "string",
                                "dateTimeFormat": "string"
                            },
                            {
                                "title": "Регион по умолчанию",
                                "propertyName": "defaultRegion",
                                "order": 4,
                                "enable": true,
                                "width": 3000,
                                "defaultValue": "string",
                                "dateTimeFormat": "string"
                            },
                            {
                                "title": "Id родительского региона",
                                "propertyName": "headId",
                                "order": 2,
                                "enable": true,
                                "width": 3000,
                                "defaultValue": "string",
                                "dateTimeFormat": "string"
                            },
                            {
                                "title": "Уровень вложенности",
                                "propertyName": "level",
                                "order": 5,
                                "enable": true,
                                "width": 3000,
                                "defaultValue": "string",
                                "dateTimeFormat": "string"
                            }
                        ]
                    }
                }
            ]
        }
    }
]

Copy-icon
Response codes

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

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

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

Copy-icon
Response sample

{
    "id": "443cbf41-ab1c-4360-a030-346327ab9fe2",
    "name": "RegionTemplate",
    "format": "csv",
    "tableData": {
        "sheets": [
            {
                "name": "sheet 1",
                "table": {
                    "name": "Region",
                    "columns": [
                        {
                            "title": "ID региона",
                            "propertyName": "id",
                            "order": 1,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Название региона",
                            "propertyName": "name",
                            "order": 3,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Регион по умолчанию",
                            "propertyName": "defaultRegion",
                            "order": 4,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Id родительского региона",
                            "propertyName": "headId",
                            "order": 2,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Уровень вложенности",
                            "propertyName": "level",
                            "order": 5,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        }
                    ]
                }
            }
        ]
    }
}

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

{
    "name": "RegionTemplate123",
    "format": "csv",
    "tableData": {
        "sheets": [
            {
                "name": "sheet 1",
                "table": {
                    "name": "Region",
                    "columns": [
                        {
                            "title": "ID региона",
                            "propertyName": "id",
                            "order": 1,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Название региона",
                            "propertyName": "name",
                            "order": 3,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Регион по умолчанию",
                            "propertyName": "defaultRegion",
                            "order": 4,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Id родительского региона",
                            "propertyName": "headId",
                            "order": 2,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Уровень вложенности",
                            "propertyName": "level",
                            "order": 5,
                            "enable": false,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        }
                    ]
                }
            }
        ]
    }
}

Copy-icon
Response sample

{
    "id": "0d10843c-fc59-4bf3-aa84-49967500d6f3",
    "name": "RegionTemplate123",
    "format": "csv",
    "tableData": {
        "sheets": [
            {
                "name": "sheet 1",
                "table": {
                    "name": "Region",
                    "columns": [
                        {
                            "title": "ID региона",
                            "propertyName": "id",
                            "order": 1,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Название региона",
                            "propertyName": "name",
                            "order": 3,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Регион по умолчанию",
                            "propertyName": "defaultRegion",
                            "order": 4,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Id родительского региона",
                            "propertyName": "headId",
                            "order": 2,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Уровень вложенности",
                            "propertyName": "level",
                            "order": 5,
                            "enable": false,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        }
                    ]
                }
            }
        ]
    }
}

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

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

Copy-icon
Request body sample

{
    "name": "RegionTemplateNewVersion",
    "format": "csv",
    "tableData": {
        "sheets": [
            {
                "name": "sheet 1",
                "table": {
                    "name": "Region",
                    "columns": [
                        {
                            "title": "ID региона",
                            "propertyName": "id",
                            "order": 1,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Название региона",
                            "propertyName": "name",
                            "order": 3,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Регион по умолчанию",
                            "propertyName": "defaultRegion",
                            "order": 4,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Id родительского региона",
                            "propertyName": "headId",
                            "order": 2,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Уровень вложенности",
                            "propertyName": "level",
                            "order": 5,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        }
                    ]
                }
            }
        ]
    }
}

Copy-icon
Response sample

{
    "id": "0d10843c-fc59-4bf3-aa84-49967500d6f3",
    "name": "RegionTemplateNewVersion",
    "format": "csv",
    "tableData": {
        "sheets": [
            {
                "name": "sheet 1",
                "table": {
                    "name": "Region",
                    "columns": [
                        {
                            "title": "ID региона",
                            "propertyName": "id",
                            "order": 1,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Название региона",
                            "propertyName": "name",
                            "order": 3,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Регион по умолчанию",
                            "propertyName": "defaultRegion",
                            "order": 4,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Id родительского региона",
                            "propertyName": "headId",
                            "order": 2,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        },
                        {
                            "title": "Уровень вложенности",
                            "propertyName": "level",
                            "order": 5,
                            "enable": true,
                            "width": 3000,
                            "defaultValue": "string",
                            "dateTimeFormat": "string"
                        }
                    ]
                }
            }
        ]
    }
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, данные шаблона обновлены
  • 400 - ошибка, не далось обновить данные шаблона
  • Удаление шаблона - DELETE запрос, /v1/templates/{templateId}
Request parameters

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

Copy-icon
Response sample

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

 

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

Связанные статьи

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