Valeur d'en-tête: application / vnd.api + json

101

Quelqu'un peut-il expliquer les différences entre:

application/vnd.api+json

et

application/json
RockNinja
la source

Réponses:

94

Le type de média application/vnd.api+jsonfait référence à l'API JSON. Vous pouvez en lire plus en détail ici .

En bref, l'API JSON est une API avisée et bien raisonnée:

… Spécification de la manière dont un client doit demander que les ressources soient récupérées ou modifiées, et comment un serveur doit répondre à ces requêtes.

Gordon McCreight
la source
30
Ce serait génial si une phrase sur le préfixe du fournisseur (`vnd.`) Soit incluse dans cette réponse de la réponse de @rmhartog.
Vasif
Je suis ici spécifiquement parce que je cherchais une explication vnd, que je sais maintenant être le préfixe du fournisseur à cause de @Vasif. Une retouche de l'original serait superbe.
Kamuela Franco
69

Le premier est un type de média spécifique à l'API. Le préfixe du fournisseur ( vnd.) indique qu'il est personnalisé pour ce fournisseur. Le +jsonindique qu'il peut être analysé en tant que JSON, mais le type de média doit définir une sémantique supplémentaire en plus de JSON.

Le second signifie simplement que le contenu est JSON. Ce n'est en général pas très utile, car cela ne définit pas ce que signifient les valeurs JSON.

Un bon point de départ pour lire à ce sujet serait sur Wikipedia , mais pour plus de détails, vous pouvez toujours suivre les liens vers les RFC correspondants sur cette page .

rmhartog
la source
33

Si vous n'êtes pas sûr, utilisez application/json- c'est le type MIME générique qui ne nécessite que les données que vous renvoyez pour être un JSON bien formé .


Le application/vnd.api+jsontype MIME est réservé à la communication à l'aide du protocole "JSON API" (nommé de manière confuse) .

« API JSON » dans ce contexte ne pas dire une API basée sur HTTP et JSON. Ce n'est pas non plus une API entièrement spécifiée - c'est plutôt un cadre pour la création d'API qui permettent au client d'extraire et de modifier des entités interdépendantes. Par exemple, une application de blog pourrait implémenter une API conforme à la spécification "JSON API", qui permet de récupérer les 10 derniers articles d'un auteur donné, avec des métadonnées et des commentaires pour chaque article, dans une seule requête HTTP.

Le cahier des charges définit notamment:

  • la manière spécifique dont une demande doit être formée (c'est-à-dire quels paramètres d'URL contrôlent le tri et la pagination et les données incluses dans la sortie);
  • la structure spécifique du document JSON dans la réponse, par exemple:

    Un document DOIT contenir au moins l'un des membres de niveau supérieur suivants:

    • data: les «données primaires» du document
    • errors: un tableau d'objets d'erreur
    • meta: un objet méta contenant des méta-informations non standard.

    Les membres dataet errorsNE DOIVENT PAS coexister dans le même document.

Nickolay
la source
8

Le type de support (ou) de type MIME (Multipurpose Internet Mail Extensions) est un moyen normalisé d'indiquer la nature et le format d'un document transféré sur Internet. Il est normalisé dans IETF RFC 6838 . L' Internet Assigned Numbers Authority (IANA) est l'organisme officiel responsable du suivi de tous les types MIME officiels.

Le type de support utilisé par l' API JSON est application / vnd.api + json et il a été correctement enregistré auprès de l'IANA.

Le type de média API + JSON est destiné à l'interopérabilité entre les différentes API qui servent JSON.

Il a été créé en tenant compte des clients "JavaScript épais" et de leurs besoins, mais ne leur est pas spécifique. Donc, préfixé par vnd(fournisseur).

Ajout de quelques points supplémentaires sur l'API JSON:

  • L'API JSON est une spécification qui définit une spécification d'API sur la manière dont une demande et une réponse devraient être.
  • Nous permet de créer une structure bien définie (comme la ressource - les relations et ses liens etc.)
  • Spécifie comment les API REST doivent réagir pour les opérations CRUD .
  • Permet au client de mettre en cache les réponses.
Tom Taylor
la source
-1

Si vous devez configurer l' application d'en- tête ci-dessous / vnd.hmrc.1.0 + json

Alors tu devrais aller avec

Accept: application/vnd.hmrc.1.0+json

En utilisant le CUrl, vous pouvez exécuter le script comme

$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);

J'espère que ça aide!!

Mahesh Yadav
la source
2
Cela ne concerne pas du tout la question.
Christian