Wartość nagłówka: application / vnd.api + json


101

Czy ktoś może wyjaśnić różnice między:

application/vnd.api+json

i

application/json

Odpowiedzi:


94

Typ mediów application/vnd.api+jsonodnosi się do JSON API. Możesz przeczytać o tym szczegółowo tutaj .

Krótko mówiąc, JSON API jest uparty i dobrze uzasadniony:

… Specyfikacja, w jaki sposób klient powinien żądać pobrania lub modyfikacji zasobów i jak serwer powinien odpowiadać na te żądania.


30
Byłoby wspaniale, gdyby w tej odpowiedzi z odpowiedzi @rmhartog znalazło się zdanie o przedrostku dostawcy (`vnd.`).
Vasif

Jestem tutaj specjalnie, ponieważ szukałem wyjaśnienia vnd, które teraz wiem, że jest prefiksem sprzedawcy, ponieważ @Vasif. Edycja oryginału byłaby znakomita.
Kamuela Franco

69

Pierwszy to typ mediów specyficzny dla API. Przedrostek dostawcy ( vnd.) wskazuje, że jest on niestandardowy dla tego dostawcy. Symbol +jsonwskazuje, że można go przeanalizować jako JSON, ale typ nośnika powinien definiować dalszą semantykę poza JSON.

Drugi oznacza po prostu, że zawartość to JSON. Jest to jednak ogólnie mało przydatne, ponieważ nie definiuje, co oznaczają wartości JSON.

Dobrym punktem wyjścia do przeczytania na ten temat byłaby Wikipedia , ale aby uzyskać więcej informacji, zawsze możesz skorzystać z łączy do odpowiednich specyfikacji RFC na tej stronie .


33

Jeśli nie masz pewności, użyj application/json- jest to ogólny typ MIME, który wymaga tylko, aby zwracane dane były poprawnie sformułowanym JSON .


Typ application/vnd.api+jsonMIME jest zarezerwowany do komunikacji przy użyciu (myląco nazwanego) protokołu „JSON API” .

„JSON API” w tym kontekście nie oznacza żadnego API opartego na HTTP i JSON. Nie jest to również w pełni określony interfejs API - raczej jest to struktura do tworzenia interfejsów API, które umożliwiają klientowi pobieranie i modyfikowanie powiązanych ze sobą jednostek. Na przykład aplikacja blogowa mogłaby zaimplementować interfejs API zgodny ze specyfikacją „JSON API”, który umożliwia pobranie ostatnich 10 artykułów danego autora wraz z metadanymi i komentarzami do każdego artykułu w jednym żądaniu HTTP.

Specyfikacja określa w szczególności:

  • konkretny sposób, w jaki żądanie powinno zostać utworzone (tj. jakie parametry adresu URL sterują sortowaniem i paginacją oraz danymi zawartymi w wynikach);
  • specyficzna struktura dokumentu JSON w odpowiedzi, na przykład:

    Dokument MUSI zawierać co najmniej jednego z następujących członków najwyższego poziomu:

    • data: „podstawowe dane” dokumentu
    • errors: tablica obiektów błędów
    • meta: meta obiekt zawierający niestandardowe metainformacje.

    Członkowie datai errorsNIE MOGĄ współistnieć w tym samym dokumencie.


8

Multipurpose Internet Mail Extensions (MIME) Typ (lub) typ nośnika jest znormalizowany sposób określający rodzaj i format dokumentu przekazanego przez internet. Jest znormalizowany w IETF RFC 6838 . The Internet Assigned Numbers Authority (IANA) jest oficjalnym organem odpowiedzialnym za śledzenie wszystkich oficjalnych typów MIME.

Typ mediów używany przez JSON API to application / vnd.api + json i został poprawnie zarejestrowany w IANA.

Typ mediów API + JSON służy do współdziałania różnych interfejsów API obsługujących format JSON.

Został stworzony z myślą o klientach „grubych JavaScript” i ich potrzebach, ale nie jest dla nich specyficzny. Tak więc z prefiksem vnd(sprzedawca).

Dodanie kilku dodatkowych punktów w JSON API:

  • JSON API to specyfikacja, która definiuje specyfikację API dotyczącą tego, jak żądanie i odpowiedź powinny być.
  • Pozwala nam tworzyć dobrze zdefiniowaną strukturę (jak zasoby - relacje i ich linki itp.)
  • Określa, jak interfejsy API REST powinny reagować na operacje CRUD .
  • Umożliwia klientowi buforowanie odpowiedzi.

-1

Jeśli chcesz skonfigurować poniższą aplikację nagłówkową / vnd.hmrc.1.0 + json

Wtedy powinieneś iść

Accept: application/vnd.hmrc.1.0+json

Używając CUrl, możesz uruchomić skrypt jako

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

Mam nadzieję, że to pomoże!!


2
To w ogóle nie odnosi się do pytania.
Christian,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.