URL-адрес статического ресурса как абсолютный или относительный путь в ответе API - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть служба 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.

...