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

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

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

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

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

В работе микросервиса используется сущность MediaRequest, которая содержит данные о запросе медиа (название стенда; название сервиса; название папки, где хранится медиа; список медиа файлов; флаг о наличии/отсутствии необходимости изменения размера медиа файла и др.).

Аутентификация и авторизация

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

Service context path

/api/media/

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

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

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

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "POSTGRES_DATABASE": "media",
    "POSTGRES_MIGRATION_USER": "media_migration",
    "POSTGRES_PORT": "5432",
    "POSTGRES_USER": "media_user",
    "SERVER_PORT": "порт_сервера"
  }
}

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

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


{
  "env": {
    "BUCKET_ENDPOINT": "адрес_бакета",
    "POSTGRES_HOST": "адрес_хоста",
    "POSTGRES_MIGRATION_PASSWORD": "пароль",
    "POSTGRES_PASSWORD": "пароль",
    "PRIVATE_ACCESS_KEY": "ключ_доступа_к_закрытому_баскету",
    "PRIVATE_BUCKET_NAME": "имя_закрытого_баскета",
    "PRIVATE_SECRET_KEY": "секретный_ключ_для_закрытого_баскета",
    "PUBLIC_ACCESS_KEY": "ключ_доступа_к_публичному_баскету",
    "PUBLIC_BUCKET_NAME": "имя_публичного_баскета",
    "PUBLIC_SECRET_KEY": "секретный_ключ_для_публичного_баскета",
    "SPRING_OAUTH_AUTHORITY": "домен_сервера_аутентификации",
    "SPRING_OAUTH_CLIENT_ID": "client_id"
  }


Copy-icon

Создание медиа - POST запрос, /v1/media

Request parameters

standName - название стенда
serviceName - название сервиса
folder - название папки
files - список медиа файлов
fileMap - карта файлов с указанием их названия и медиа-ключа
withResizing - флаг для активации изменения размера изображения
originalFileName - оригинальное название файла
originalFileNameMediaKey - оригинальный медиа-ключ названия медиа файла

Copy-icon
Response sample

{
    "1-pinot-grigio-640x294.jpg": "master/catalog/images/1716034828389-1882559365.jpg"
}

Copy-icon
Response codes
  • 200 - медиа файл создан, возвращен медиа-ключ файла
  • 422 - ошибка, отсутствуют обязательные параметры

Публикация медиа файла -PUT запрос, /v1/media

Request body sample

{
    "standName": "master",
    "serviceName": "catalog",
    "folder": "images",
    "fileMap": {
        "1-pinot-grigio-640x294.jpg": "1716034828389-1882559365.jpg"
    },
    "withResizing": "false"
}

Copy-icon
Response sample

{
    "1-pinot-grigio-640x294.jpg": "master/catalog/images/1716034828389-1882559365.jpg"
}

Copy-icon
Response codes
  • 200 - операция успешно выполнена, медиа файл опубликован
  • 404 - ошибка, медиа файл не найден
  • 422 - ошибка, Unprocessable Entity

Удаление медиа файла - DELETE запрос, /v1/media/{standName}/{serviceName}/{folder}/{fileName}

Request parameters

standName - path-параметр, обязательный: название стенда
serviceName - path-параметр, обязательный: название сервиса
folder - path-параметр, обязательный: название папки
fileName - path-параметр, обязательный: название файла

Copy-icon
Response sample

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

Response codes
  • 204 - медиа файл успешно удален
  • 404 - ошибка, медиа файл не найден

Создание медиа по пути - POST запрос, /v1/media/{standName}/{serviceName}/{folder}

Request parameters

standName - path-параметр, обязательный: название стенда
serviceName - path-параметр, обязательный: название сервиса
folder - path-параметр, обязательный: название папки

Copy-icon
Request body sample

file (MultipartFile) - файл для загрузки

Copy-icon
Response sample

mediaKey - сгенерированный медиа-ключ файла

Copy-icon

Response codes:

  • 200 - медиа файл создан, возвращен медиа-ключ файла
  • 422 - ошибка, отсутствуют обязательные параметры

Публикация медиа (перенос медиа в публичный бакет) - PUT запрос, /v1/media/{standName}/{serviceName}/{folder}/{fileName}

Request parameters

standName - path-параметр, обязательный: название стенда
serviceName - path-параметр, обязательный: название сервиса
folder - path-параметр, обязательный: название папки
fileName - path-параметр, обязательный: название файла
withResizing - флаг для активации изменения размера изображения

Copy-icon
Response sample

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

Response codes
  • 200 - операция успешно выполнена, медиа файл опубликован
  • 404 - ошибка, медиа файл не найден
  • 422 - ошибка, Unprocessable Entity

Изменение размера медиа файла - POST запрос, /v1/media/resize

Request body sample

{
    "standName": "master",
    "serviceName": "catalog",
    "folder": "images",
    "fileMap": {
        "1-pinot-grigio-640x294.jpg": "1716034828389-1882559365.jpg"
    },
    "withResizing": "true"
}

Copy-icon
Response sample

{
    "1-pinot-grigio-640x294.jpg": "master/catalog/images/1716034828389-1882559365.jpg"
}

Copy-icon
Response codes
  • 202 - операция выполнена успешно, возвращен медиа-ключ файла
  • 422 - ошибка, отсутствуют обязазельные данные

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

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