Значення заголовка: application / vnd.api + json


101

Чи може хтось пояснити відмінності між:

application/vnd.api+json

і

application/json

Відповіді:


94

Тип носія application/vnd.api+jsonвідноситься до API JSON. Ви можете детально прочитати про це тут .

Коротше кажучи, JSON API - це впевнений та аргументований:

… Специфікація того, як клієнт повинен вимагати отримання ресурсів або зміну ресурсів, і як сервер повинен відповідати на ці запити.


30
Було б чудово, якби пропозиція про префікс постачальника (`vnd. ') Була включена у цю відповідь з відповіді @rmhartog.
Васиф

Я спеціально тут, тому що я шукав пояснення vnd, яке я тепер знаю як приставку постачальника через @Vasif. Правка оригіналу була б чудовою.
Камуела Франко

69

Перший - це специфічний для мультимедійного типу API. Префікс постачальника ( vnd.) вказує, що для цього постачальника він звичайний. +jsonВказує на те, що він може бути розібрано як JSON, але тип носія повинен визначити подальші семантику поверх JSON.

Другий просто означає, що вміст є JSON. Це взагалі не дуже корисно, оскільки не визначає, що означають значення JSON.

Гарною відправною точкою для читання про це було б у Вікіпедії , але для отримання більш детальної інформації ви завжди можете перейти за посиланнями на відповідні RFC на цій сторінці .


33

Якщо ви не впевнені, використовуйте application/json- це загальний тип MIME, який вимагає лише тих даних, які ви повертаєте, щоб бути добре сформованим JSON .


Тип application/vnd.api+jsonMIME зарезервований для зв'язку за допомогою протоколу "JSON API" (збентежено названого) .

"JSON API" в цьому контексті не означає жодного API, заснованого на HTTP та JSON. Це не повністю визначений API - скоріше, це структура для побудови API, що дозволяє клієнту отримувати та змінювати взаємопов'язані об'єкти. Наприклад, програма для блогу може реалізувати API, що відповідає специфікації "JSON API", що дозволяє отримувати останні 10 статей даного автора з метаданими та коментарями до кожної статті в одному запиті HTTP.

Специфікація визначає, зокрема:

  • конкретний спосіб повинен формуватися запит (тобто які параметри URL-адреси керують сортуванням та пагінацією та даними, що містяться у висновку);
  • конкретна структура документа JSON у відповіді, наприклад:

    Документ ПОВИНЕН містити принаймні одного з таких членів вищого рівня:

    • data: "первинні дані" документа
    • errors: масив об'єктів помилок
    • meta: метаоб'єкт, який містить нестандартну метаінформацію.

    Члени dataта errorsНЕ МОЖЕ співіснувати в одному документі.


8

Типу Multipurpose Internet Mail Extensions (MIME) Тип носія (або) являє собою стандартизований спосіб вказати характер і формат документа , переданого через Інтернет. Це стандартизовано в IETF RFC 6838 . В Internet Assigned Numbers Authority (IANA) є офіційним органом , відповідальним за відстеження всіх офіційних типів MIME.

Тип носія, що використовується API JSON, - це application / vnd.api + json і він був належним чином зареєстрований у IANA.

Тип носія API + JSON призначений для сумісності між різними API, які обслуговують JSON.

Він створений з урахуванням клієнтів "товстого JavaScript" та їх потреб, але не є специфічним для них. Отже, з префіксом vnd(постачальник).

Додавання ще кількох балів у API JSON:

  • API JSON - специфікація, яка визначає специфікацію api про те, яким повинен бути запит та відповідь.
  • Дозволяє нам створити чітко визначену структуру (наприклад, ресурс - відносини та посилання тощо).
  • Вказує, як API REST повинні реагувати на операції CRUD .
  • Дозволяє клієнту кешувати відповіді.

-1

Якщо вам потрібно встановити нижче заголовок application / vnd.hmrc.1.0 + json

Тоді вам слід піти

Accept: application/vnd.hmrc.1.0+json

За допомогою CUrl сценарій можна запустити як

$url="https://test-api.service.hmrc.gov.uk/hello/world";
$ch = curl_init();
$curlConfig = array(
    CURLOPT_URL            => $url,
    CURLOPT_HTTPHEADER     => array('Accept: application/vnd.hmrc.1.0+json') 
);

curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);

Сподіваюся, це допомагає !!


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