Valor del encabezado: aplicación / vnd.api + json

101

¿Alguien puede explicar las diferencias entre:

application/vnd.api+json

y

application/json
RockNinja
fuente

Respuestas:

94

El tipo de medio se application/vnd.api+jsonrefiere a la API JSON. Puede leerlo con gran detalle aquí .

En resumen, JSON API es obstinado y bien razonado:

... especificación de cómo un cliente debe solicitar que los recursos sean recuperados o modificados, y cómo un servidor debe responder a esas solicitudes.

Gordon McCreight
fuente
30
Sería genial si se incluyera una oración sobre el prefijo del proveedor (`vnd.`) En esta respuesta de la respuesta de @rmhartog.
Vasif
Estoy aquí específicamente porque estaba buscando una explicación de vnd, que ahora sé que es el prefijo del proveedor debido a @Vasif. Una edición del original sería excelente.
Kamuela Franco
68

El primero es un tipo de medio específico de API. El prefijo de proveedor ( vnd.) indica que es personalizado para este proveedor. El +jsonindica que se puede analizar como JSON, pero el tipo de medios debería definir más la semántica en la parte superior de JSON.

El segundo solo significa que el contenido es JSON. Sin embargo, esto en general no es muy útil porque no define lo que significan los valores JSON.

Un buen punto de partida para leer sobre esto sería en Wikipedia , pero para obtener más detalles, siempre puede seguir los enlaces a las RFC correspondientes en esa página .

rmhartog
fuente
33

Si no está seguro, utilice application/json: es el tipo MIME genérico que solo requiere que los datos que devuelve sean un JSON bien formado .


El application/vnd.api+jsontipo MIME está reservado para la comunicación mediante el protocolo "API JSON" (de nombre confuso) .

"API JSON" en este contexto no significa ninguna API basada en HTTP y JSON. Tampoco es una API completamente especificada, sino un marco para crear API que permiten al cliente buscar y modificar entidades interrelacionadas. Por ejemplo, una aplicación de blog podría implementar una API que cumpla con la especificación "JSON API", que permite obtener los últimos 10 artículos de un autor determinado, con metadatos y comentarios para cada artículo, en una única solicitud HTTP.

La especificación define, en particular:

  • la forma específica en que debe formarse una solicitud (es decir, qué parámetros de URL controlan la clasificación y la paginación y los datos incluidos en la salida);
  • la estructura específica del documento JSON en la respuesta, por ejemplo:

    Un documento DEBE contener al menos uno de los siguientes miembros de nivel superior:

    • data: los "datos primarios" del documento
    • errors: una matriz de objetos de error
    • meta: un meta objeto que contiene metainformación no estándar.

    Los miembros datay errorsNO DEBEN coexistir en un mismo documento.

Nickolay
fuente
7

El tipo (o) de medio de Extensiones de correo de Internet multipropósito (MIME) es una forma estandarizada de indicar la naturaleza y el formato de un documento transferido a través de Internet. Está estandarizado en IETF RFC 6838 . La Autoridad de Números Asignados de Internet (IANA) es el organismo oficial responsable de realizar un seguimiento de todos los tipos de MIME oficiales.

El tipo de medio utilizado por JSON API es application / vnd.api + json y se ha registrado correctamente en IANA.

El tipo de medio API + JSON es para la interoperabilidad entre diferentes API que sirven JSON.

Se creó teniendo en cuenta los clientes de "JavaScript grueso" y sus necesidades, pero no es específico para ellos. Entonces, con el prefijo vnd(vendedor).

Añadiendo algunos puntos más en la API JSON:

  • JSON API es una especificación que define una especificación de API sobre cómo debe ser una solicitud y respuesta.
  • Nos permite crear tener una estructura bien definida (como recurso - relaciones y sus enlaces, etc.)
  • Especifica cómo deben reaccionar las API REST para las operaciones CRUD .
  • Permite al cliente almacenar en caché las respuestas.
Tom Taylor
fuente
-1

Si necesita configurar la aplicación de encabezado siguiente / vnd.hmrc.1.0 + json

Entonces deberías ir con

Accept: application/vnd.hmrc.1.0+json

Usando la CUrl puede ejecutar el 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 eso ayude!!

Mahesh Yadav
fuente
2
Esto no se relaciona en absoluto con la pregunta.
Christian