Header-Wert: application / vnd.api + json

101

Kann jemand die Unterschiede erklären zwischen:

application/vnd.api+json

und

application/json
RockNinja
quelle

Antworten:

94

Der Medientyp application/vnd.api+jsonbezieht sich auf die JSON-API. Sie können hier ausführlich darüber lesen .

Kurz gesagt, JSON API ist eine Meinung und gut begründet:

… Spezifikation, wie ein Client das Abrufen oder Ändern von Ressourcen anfordern soll und wie ein Server auf diese Anforderungen reagieren soll.

Gordon McCreight
quelle
30
Es wäre großartig, wenn ein Satz über das Herstellerpräfix (`vnd .`) in dieser Antwort aus der Antwort von @rmhartog enthalten wäre.
Vasif
Ich bin speziell hier, weil ich nach einer Erklärung gesucht habe vnd, von der ich jetzt weiß, dass sie aufgrund von @Vasif das Herstellerpräfix ist. Eine Bearbeitung des Originals wäre hervorragend.
Kamuela Franco
68

Der erste ist ein API-spezifischer Medientyp. Das Herstellerpräfix ( vnd.) gibt an, dass es für diesen Anbieter benutzerdefiniert ist. Das +jsongibt an, dass es als JSON analysiert werden kann, aber als Medientyp sollte weitere Semantik definieren.

Der zweite bedeutet nur, dass der Inhalt JSON ist. Dies ist jedoch im Allgemeinen nicht sehr nützlich, da es nicht definiert, was die JSON-Werte bedeuten.

Ein guter Ausgangspunkt, um darüber zu lesen, wäre Wikipedia . Für weitere Details können Sie jedoch jederzeit den Links zu den entsprechenden RFCs auf dieser Seite folgen .

rmhartog
quelle
33

Wenn Sie sich nicht sicher sind, verwenden Sie application/json- es ist der generische MIME-Typ, für den nur die von Ihnen zurückgegebenen Daten als wohlgeformter JSON erforderlich sind .


Der application/vnd.api+jsonMIME-Typ ist für die Kommunikation mit dem (verwirrend benannten) "JSON API" -Protokoll reserviert .

„JSON API“ in diesem Zusammenhang nicht nicht bedeutet jede API basiert auf HTTP und JSON. Es ist auch keine vollständig spezifizierte API, sondern ein Framework zum Erstellen von APIs, mit denen der Client miteinander verbundene Entitäten abrufen und ändern kann. Beispielsweise könnte eine Blog-Anwendung eine API implementieren, die der Spezifikation "JSON API" entspricht und das Abrufen der letzten 10 Artikel eines bestimmten Autors mit Metadaten und Kommentaren für jeden Artikel in einer einzelnen HTTP-Anforderung ermöglicht.

Die Spezifikation definiert insbesondere:

  • die spezifische Art und Weise, wie eine Anfrage gebildet werden soll (dh welche URL-Parameter die Sortierung und Paginierung steuern und welche Daten in der Ausgabe enthalten sind);
  • die spezifische Struktur des JSON-Dokuments in der Antwort, zum Beispiel:

    Ein Dokument MUSS mindestens eines der folgenden Mitglieder der obersten Ebene enthalten:

    • data: die "Primärdaten" des Dokuments
    • errors: ein Array von Fehlerobjekten
    • meta: Ein Metaobjekt, das nicht standardmäßige Metainformationen enthält.

    Die Mitglieder dataund dürfen errorsNICHT im selben Dokument koexistieren.

Nickolay
quelle
7

Der Medientyp MIME ( Multipurpose Internet Mail Extensions) (oder) ist eine standardisierte Methode, um die Art und das Format eines über das Internet übertragenen Dokuments anzugeben. Es ist in IETF RFC 6838 standardisiert . Die Internet Assigned Numbers Authority (IANA) ist die offizielle Stelle, die für die Verfolgung aller offiziellen MIME-Typen zuständig ist.

Der von der JSON-API verwendete Medientyp ist application / vnd.api + json und wurde ordnungsgemäß bei IANA registriert.

Der Medientyp API + JSON dient zur Interoperabilität zwischen verschiedenen APIs, die JSON bedienen.

Es wurde unter Berücksichtigung von "Thick JavaScript" -Clients und deren Anforderungen erstellt, ist jedoch nicht spezifisch für sie. Also mit dem Präfix vnd(Anbieter).

Hinzufügen einiger weiterer Punkte zur JSON-API:

  • Die JSON-API ist eine Spezifikation, die eine API-Spezifikation definiert, wie eine Anfrage und Antwort sein soll.
  • Ermöglicht es uns, eine genau definierte Struktur zu erstellen (wie Ressourcenbeziehungen und deren Verknüpfungen usw.)
  • Gibt an, wie die REST-APIs auf CRUD- Operationen reagieren sollen .
  • Ermöglicht dem Client, die Antworten zwischenzuspeichern.
Tom Taylor
quelle
-1

Wenn Sie den folgenden Header einrichten müssen Anwendung / vnd.hmrc.1.0 + json einrichten müssen

Dann solltest du mit gehen

Accept: application/vnd.hmrc.1.0+json

Mit der CUrl können Sie das Skript als ausführen

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

Ich hoffe es hilft!!

Mahesh Yadav
quelle
2
Dies bezieht sich überhaupt nicht auf die Frage.
Christian