Это озадачивало меня некоторое время.
Например, у нас есть REST API, который обеспечивает базовый контент для системы, потребляя и производя JSON. В этой конечной точке он создает URL-адрес для изображения и описания и находится следующим образом: // localhost / myApi / pictures / 1
{
id: 1,
description: "This is a pretty picture of a daisy",
URL: <OUR URL>
}
Теперь OUR_URL должен указывать на местоположение в API, например, // localhost / myApi / files / pictures / 1, которое возвращает JPG (приложение, стоящее за API, считывает физическое содержимое файла и затем передает его обратно клиенту ). Это, очевидно, отличается от остальной части API, который генерирует ответы JSON, и это будет связано с чтением и потоковой передачей реального файла.
В качестве альтернативы OUR_URL должен указывать на URL-адрес вне области действия службы REST, поэтому //localhost/files/pictures/1.jpg, где он читает файл напрямую.
Итак, вопрос:
Должен ли RESTful API возвращать файлы или просто местоположение?
источник
Ответы:
Служба RESTful должна предоставлять ресурсы пользователям API. Ресурсы могут иметь различные форматы, которые варьируются от JSON или XML до JPEG и HTML.
Нет даже требования или даже ожидания, что один API обслуживает только ресурсы одного формата. Нет ничего плохого в том, чтобы подавать документ JSON по URI
/myApi/pictures/1
и файл JPEG из URI/myApi/files/pictures/1
.В более экстремальном случае возможно даже предоставить описание JSON и файл JPEG с одного и того же URL-адреса в зависимости от формата, который запрашивает запрашивающая сторона.
источник
Одна из проблем, которую вы будете иметь при возврате URI, заключается в том, что обычный старый файловый сервер не может обеспечить безопасность. Поэтому, если вам нужно установить какие-либо ограничения на доступ к файлу, вам нужно будет иметь возможность вернуть его напрямую в REST API (или нет, если у пользователя нет прав, файл не в правильном состоянии и т. д.).
В противном случае возврат простого старого URI и передача его в выделенный CDN имеет много преимуществ в отношении предоставления, простоты и масштабируемости - при условии, что это все, что вам нужно сделать.
источник