Микросервис 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":
"порт_сервера"
}
}
// пример взят с тестового стенда
{
"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"
}
Методы микросервиса
Создание медиа - POST запрос, /v1/media
standName - название стенда
serviceName - название
сервиса
folder - название папки
files - список медиа
файлов
fileMap - карта файлов с указанием их названия и
медиа-ключа
withResizing - флаг для активации изменения размера
изображения
originalFileName - оригинальное название файла
originalFileNameMediaKey - оригинальный медиа-ключ названия медиа
файла
{
"1-pinot-grigio-640x294.jpg":
"master/catalog/images/1716034828389-1882559365.jpg"
}
- 200 - медиа файл создан, возвращен медиа-ключ файла
- 422 - ошибка, отсутствуют обязательные параметры
Публикация медиа файла -PUT запрос, /v1/media
{
"standName": "master",
"serviceName": "catalog",
"folder": "images",
"fileMap":
{
"1-pinot-grigio-640x294.jpg": "1716034828389-1882559365.jpg"
},
"withResizing":
"false"
}
{
"1-pinot-grigio-640x294.jpg":
"master/catalog/images/1716034828389-1882559365.jpg"
}
- 200 - операция успешно выполнена, медиа файл опубликован
- 404 - ошибка, медиа файл не найден
- 422 - ошибка, Unprocessable Entity
Удаление медиа файла - DELETE запрос, /v1/media/{standName}/{serviceName}/{folder}/{fileName}
standName - path-параметр, обязательный: название стенда
serviceName - path-параметр, обязательный: название сервиса
folder - path-параметр, обязательный: название папки
fileName
- path-параметр, обязательный: название файла
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - медиа файл успешно удален
- 404 - ошибка, медиа файл не
найден
Создание медиа по пути - POST запрос, /v1/media/{standName}/{serviceName}/{folder}
standName - path-параметр, обязательный: название стенда
serviceName - path-параметр, обязательный: название сервиса
folder - path-параметр, обязательный: название папки
file (MultipartFile) - файл для загрузки
mediaKey - сгенерированный медиа-ключ файла
Response codes:
- 200 - медиа файл создан, возвращен медиа-ключ файла
- 422 - ошибка, отсутствуют обязательные параметры
Публикация медиа (перенос медиа в публичный бакет) - PUT запрос, /v1/media/{standName}/{serviceName}/{folder}/{fileName}
standName - path-параметр, обязательный: название стенда
serviceName - path-параметр, обязательный: название сервиса
folder - path-параметр, обязательный: название папки
fileName
- path-параметр, обязательный: название файла
withResizing - флаг
для активации изменения размера изображения
В ответе приходит только код операции, например, 200.
- 200 - операция успешно выполнена, медиа файл опубликован
- 404 - ошибка, медиа файл не найден
- 422 - ошибка, Unprocessable Entity
Изменение размера медиа файла - POST запрос, /v1/media/resize
{
"standName": "master",
"serviceName": "catalog",
"folder": "images",
"fileMap":
{
"1-pinot-grigio-640x294.jpg": "1716034828389-1882559365.jpg"
},
"withResizing":
"true"
}
{
"1-pinot-grigio-640x294.jpg":
"master/catalog/images/1716034828389-1882559365.jpg"
}
- 202 - операция выполнена успешно, возвращен медиа-ключ файла
- 422 - ошибка, отсутствуют обязазельные данные