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

101

Может кто-нибудь объяснить различия между:

application/vnd.api+json

и

application/json
RockNinja
источник

Ответы:

95

Тип носителя application/vnd.api+jsonотносится к JSON API. Подробно об этом можно прочитать здесь .

Короче говоря, JSON API самоуверен и аргументирован:

… Спецификация того, как клиент должен запрашивать выборку или изменение ресурсов и как сервер должен отвечать на эти запросы.

Гордон МакКрайт
источник
30
Было бы здорово, если бы в этот ответ из ответа @rmhartog было включено предложение о префиксе поставщика (`vnd.`).
Vasif
Я здесь специально потому, что искал объяснение vnd, которое, как я теперь знаю, является префиксом поставщика из-за @Vasif. Редактирование оригинала было бы превосходным.
Камуэла Франко
69

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

Второй просто означает, что контент - это JSON. В целом это не очень полезно, потому что не определяет, что означают значения JSON.

Хорошей отправной точкой для чтения об этом будет Википедия , но для получения более подробной информации вы всегда можете перейти по ссылкам на соответствующие RFC на этой странице .

rmhartog
источник
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 . Управление по присвоению номеров в Интернете (IANA) является официальным органом, ответственным за отслеживание всех официальных типов MIME.

Тип носителя, используемый JSON API, - application / vnd.api + json, и он был должным образом зарегистрирован в IANA.

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

Он был создан с учетом клиентов «толстого JavaScript» и их потребностей, но не специально для них. Итак, с префиксом vnd(поставщик).

Добавляем еще несколько пунктов в JSON API:

  • JSON API - это спецификация, которая определяет спецификацию api того, как должны быть запрос и ответ.
  • Позволяет нам создавать четко определенную структуру (например, ресурсы - отношения и их ссылки и т. Д.)
  • Определяет, как REST API должны реагировать на операции CRUD .
  • Позволяет клиенту кэшировать ответы.
Том Тейлор
источник
-2

Если вам нужно настроить приложение заголовка ниже / 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
Это вообще не имеет отношения к вопросу.
Кристиан