1. Клієнти API підтримують кілька форматів
REST API може повертати представлення ресурсу в багатьох форматах – точніше, MIME-типи . Клієнтська програма або браузер може запитувати будь-який підтримуваний тип MIME у заголовку HTTP Accept .
Технічно Accept Header може мати кілька значень у формі значень, розділених комами.
Наприклад, Accept Header із запитом text/html або application/xml формати можна встановити як:
Accept : text/html,application/xml
2. Параметр “q”.
Іноді клієнти можуть захотіти встановити свої параметри, коли запитують кілька MIME типів. Для встановлення цього параметра використовується параметр q (відносний коефіцієнт якості).
Значення параметра q може бути від 0 до 1. 0 є найнижчим значенням (тобто найменш бажаним), а 1 є найвищим (тобто найбільш бажаним).
Зразок використання може бути:
Accept : text/html, application/xml;q=0.9, */*;q=0.8
У наведеному вище прикладі клієнт вказує серверу, що він віддасть перевагу спочатку отримати відповідь у форматі text/html.
Якщо сервер не підтримує формат text/html для запитуваного ресурсу, він повинен надіслати формат application/xml. Якщо жоден із обох форматів недоступний, надішліть відповідь у будь-якому форматі, який він підтримує (*/*).
- Однією з переваг параметра «q» є мінімізація взаємодії клієнт-сервер, яка могла статися через невдалі переговори щодо вмісту.
- Це також дозволяє клієнтам отримувати типи вмісту, про які вони можуть не знати, зірочка «*» може використовуватися замість другої половини значення типу MIME або обох половин.
3. Відповідно до специфікацій HTTP
Ось як це визначає специфікація HTTP:
За кожним медіа-діапазоном МОЖЕ йти один або більше параметрів accept-params, починаючи з параметра «q» для вказівки відносного фактора якості. Перший параметр «q» (якщо є) відокремлює параметр(и) медіа-діапазону від параметрів accept-params.
Фактори якості дозволяють користувачеві або агенту користувача вказати відносний ступінь переваги цього медіа-діапазону, використовуючи шкалу значень «q» від 0 до 1.
Значення за замовчуванням — 1 .
Якщо існує два типи MIME для одного q значення, то виграє більш конкретний тип між обома.
Наприклад, якщо обидва параметри application/xml і */* мають значення 0,9 application/xml, сервер обслуговуватиме їх.
Якщо Accept поле заголовка відсутнє, припускається, що клієнт приймає всі типи носіїв.
Якщо Accept поле заголовка присутнє, і якщо сервер не може надіслати відповідь, яка є прийнятною відповідно до об’єднаного Accept значення поля, тоді сервер повинен надіслати статус 406 (not acceptable) відповідь.