Микросервис media
Микросервис media предоставляет функциональность для загрузки или получения медиа файлов.
Доступ к сервису предоставляется по запросу.
Логика работы
В работе микросервиса используется сущность MediaRequest, которая содержит данные о запросе медиа (название стенда; название сервиса; название папки, где хранится медиа; список медиа файлов; флаг о наличии/отсутствии необходимости изменения размера медиа файла и др.).
Аутентификация
При обращении к микросервису через API в запросах необходимо в заголовке Authorization указывать токен: Authorization: Bearer <токен>
.
Авторизация
Для работы с микросервисом в BackOffice у пользователя должна быть роль Admin и/или Admin_Media.
Подробнее о ролях можно узнать здесь.
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"
}
}
// пример взят с тестового стенда
{
"env": {
"BUCKET_ENDPOINT": "адрес_бакета",
"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": "пароль",
"PRIVATE_ACCESS_KEY": "ключ_доступа_к_закрытому_баскету",
"PRIVATE_BUCKET_NAME": "имя_закрытого_баскета",
"PRIVATE_SECRET_KEY": "секретный_ключ_для_закрытого_баскета",
"PUBLIC_ACCESS_KEY": "ключ_доступа_к_публичному_баскету",
"PUBLIC_BUCKET_NAME": "имя_публичного_баскета",
"PUBLIC_SECRET_KEY": "секретный_ключ_для_публичного_баскета"
}
}
Методы микросервиса
- Создание медиа - 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 - сгенерированный медиа-ключ файла
- 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 - ошибка, отсутствуют обязазельные данные