У меня есть служба API загрузки Spring, другие веб-сайты и мобильные приложения называют этот API для данных и изображений. Изображения хранятся в файловой системе и путь к файлу в базе данных. Я ищу наилучшую практику для возвращения URL-адресов изображений в ответе API.
Пример записи в БД
+-----+-------+-----------------+
| Id | Name | profile_img_url |
+-----+-------+-----------------+
| 1 | John | /image/john.jpg |
| 2 | Jane | /image/jane.jpg |
| 3 | Doe | /image/doe.jpg |
+-----+-------+-----------------+
Например, у меня есть членский API.
https://example.com/get/member/id
Этот API вернет JSON с URL-адресом изображения члена
Должен ли я возвращать profile_img_url как абсолютный или относительный URL-адрес
Вот мои мысли
Ответ с относительным URL
{
"name" : "John",
"profile_img_url": "/image/john.jpg",
}
- В API-коде не нужно беспокоиться о базовом URL-адресе (доменном имени), о котором должен заботиться вызывающий веб-сайт или мобильное приложениебазового URL.
- В API я просто читаю и отправляю профиль img url, и мне не нужно тратить время на объединение имени домена и имени файла для создания абсолютного URL, поэтому ответ должен быть быстрым.
Ответ с абсолютным URL
{
"name" : "John",
"profile_img_url": "https://example.com/image/john.jpg",
}
В моем API мне нужно найти имя хоста и объединить путь к файлу для каждого запроса, приводящего кненужная загрузка на сервере API.
Если я возвращаю список членов, мне нужно извлечь из БД, пройтись по списку и создать абсолютный URL. это может замедлить ответ API.
Кроме того, я должен убедиться, что мой сервер API за прокси-сервером или балансировкой нагрузки может обнаруживать имя домена / хоста и использовать его для объединения
Вызывая веб-сайт или мобильное приложение, не нужно беспокоиться о базовом URL / доменном имени
Мне не нужно обучать мобильную команду или команду разработчиков клиентских приложенийкак получить изображение профиля
В будущем, если я решу сервировать свои изображения из другого домена или субдомена, мне не придется сообщать другим командам
Если это простой веб-сайт (интерфейс + бэкэнд вместе), я думаю, что относительный URL-адрес будет достаточным для веб-сайта, если вы не используете сайт с высоким трафиком, который нуждается в очень высокой производительности оптимизации.
ВВ моем случае я запускаю только бэкэнд API. Front End будет другими приложениями / мобильными приложениями нашей компании или наших партнеров
, вы также можете прочитать эту страницу, хотя она не имеет прямого отношения к моему вопросу, но говорит о проблеме, связанной сна URL-адреса в несвязной системе
, так что лучше использовать абсолютный или относительный URL-адрес в ответе API.