Якщо RESTful API зможе повернути файли чи просто розташування


12

Це мене спантеличує вже деякий час.

Наприклад, у нас є 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 вміти повертати файли чи просто розташування?


1
Ви розумієте, що загальний опис того, що означає REST, означає "клієнти роблять запити на URL, а сервер повертає речі", правда? Вся ідея полягає в тому, що REST дуже чітко визначений і може бути адаптований практично до будь-якої схеми пошуку на основі URL.

Відповіді:


17

Служба RESTful повинна надавати ресурси користувачам API. Ресурси можуть мати різні формати, що варіюються від JSON або XML до JPEG та HTML.

Не існує навіть вимоги чи навіть очікування, що один API обслуговує лише ресурси єдиного формату. Немає нічого поганого в тому, щоб подати документ JSON на URI /myApi/pictures/1та файл JPEG з URI /myApi/files/pictures/1.
В більш крайньому випадку, навіть можна подавати опис JSON та файл JPEG з тієї ж URL-адреси, залежно від формату, який запитує запитувач.


7

Одна з проблем, що виникають при поверненні URI, полягає в тому, що звичайний старий файловий сервер не може забезпечити безпеку. Отже, якщо вам потрібно зробити якесь обмеження щодо того, хто може отримати доступ до файлу, вам потрібно буде мати можливість повернути його в API REST безпосередньо (або ні, якщо користувач не має прав, файл - це не в правильному стані тощо).

В іншому випадку повернення звичайного старого URI та відведення його до виділеного CDN має багато переваг щодо забезпечення, простоти та масштабованості - якщо припустити, що це все, що вам потрібно зробити.


Авторський аспект - це дуже хороший момент, що я ніколи не розглядав.
Божевільний Діно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.