Valor do cabeçalho: application / vnd.api + json


101

Alguém pode explicar as diferenças entre:

application/vnd.api+json

e

application/json

Respostas:


94

O tipo de mídia application/vnd.api+jsonse refere à API JSON. Você pode ler sobre isso em detalhes aqui .

Resumindo, a API JSON é uma API opinativa e bem fundamentada:

… Especificação de como um cliente deve solicitar que os recursos sejam buscados ou modificados e como um servidor deve responder a essas solicitações.


30
Seria ótimo se uma frase sobre o prefixo do fornecedor (`vnd.`) Fosse incluída nesta resposta da resposta de @rmhartog.
Vasif

Estou aqui especificamente porque estava procurando uma explicação vnd, que agora sei ser o prefixo do fornecedor por causa de @Vasif. Uma edição do original seria excelente.
Kamuela Franco de

68

O primeiro é um tipo de mídia específico da API. O prefixo do fornecedor ( vnd.) indica que é personalizado para este fornecedor. O +jsonindica que ele pode ser analisado como JSON, mas o tipo de mídia deve definir semântica adicional sobre JSON.

O segundo significa apenas que o conteúdo é JSON. Em geral, isso não é muito útil, porque não define o que os valores JSON significam.

Um bom ponto de partida para ler sobre isso seria na Wikipedia , mas para obter mais detalhes, você sempre pode seguir os links para os RFCs correspondentes nessa página .


33

Se você não tiver certeza, use application/json- é o tipo MIME genérico que requer apenas que os dados que você retorna sejam um JSON bem formado .


O application/vnd.api+jsontipo MIME é reservado para comunicação usando o protocolo "JSON API" (nome confuso) .

"API JSON" neste contexto não significa nenhuma API baseada em HTTP e JSON. Também não é uma API totalmente especificada - em vez disso, é uma estrutura para construir APIs que permitem ao cliente buscar e modificar entidades inter-relacionadas. Por exemplo, um aplicativo de blog poderia implementar uma API em conformidade com a especificação "API JSON", que permite buscar os últimos 10 artigos de um determinado autor, com metadados e comentários para cada artigo, em uma única solicitação HTTP.

A especificação define, em particular:

  • a forma específica como uma solicitação deve ser formada (ou seja, quais parâmetros de URL controlam a classificação e paginação e os dados incluídos na saída);
  • a estrutura específica do documento JSON na resposta, por exemplo:

    Um documento DEVE conter pelo menos um dos seguintes membros de nível superior:

    • data: os “dados primários” do documento
    • errors: uma matriz de objetos de erro
    • meta: um metaobjeto que contém meta-informações não padronizadas.

    Os membros datae errorsnão deve coexistir no mesmo documento.


7

O tipo (ou) de mídia MIME (Multipurpose Internet Mail Extensions) é uma maneira padronizada de indicar a natureza e o formato de um documento transferido pela Internet. É padronizado em IETF RFC 6838 . A Internet Assigned Numbers Authority (IANA) é o órgão oficial responsável por manter o controle de todos os tipos oficiais de MIME.

O tipo de mídia usado pela API JSON é application / vnd.api + json e foi devidamente registrado na IANA.

O tipo de mídia API + JSON é para interoperabilidade entre diferentes APIs que atendem JSON.

Ele foi criado levando em consideração os clientes "JavaScript denso" e suas necessidades, mas não é específico para eles. Portanto, prefixado com vnd(fornecedor).

Adicionando mais alguns pontos na API JSON:

  • JSON API é uma especificação que define uma especificação de API sobre como uma solicitação e resposta devem ser.
  • Permite-nos criar uma estrutura bem definida (como recursos - relacionamentos e seus links etc.)
  • Especifica como as APIs REST devem reagir para operações CRUD .
  • Permite que o cliente armazene em cache as respostas.

-1

Se você precisar configurar o aplicativo de cabeçalho abaixo / vnd.hmrc.1.0 + json

Então você deve ir com

Accept: application/vnd.hmrc.1.0+json

Usando o CUrl, você pode executar o script como

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

Espero que ajude!!


2
Isso não tem nada a ver com a questão.
Christian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.