Obtención de recursos (GET)
Esta página muestra ejemplos de varias solicitudes GET para el módulo JSON:API.
En todos los ejemplos a continuación, no se requieren encabezados de solicitud. No se requiere autenticación si los usuarios anónimos pueden acceder a las entidades de contenido. Para entidades de configuración como menús, consulta las últimas secciones.
Ten en cuenta que en todos los casos, cuando se necesita un id, siempre es el uuid de la entidad, no el id de la entidad.
Encabezado Accept
Asegúrate de enviar siempre el encabezado accept: Accept: application/vnd.api+json.
curl \
--header 'Accept: application/vnd.api+json' \
....
Ejemplo básico de GET
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene el objeto JSON:API de un único nodo artículo, incluyendo atributos, relaciones y enlaces.
GET de múltiples artículos
URL: http://example.com/jsonapi/node/article
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene el objeto JSON:API de un máximo de 50 artículos, incluyendo enlace al siguiente.
GET de los primeros 10 artículos
URL: http://example.com/jsonapi/node/article?page[limit]=10
Respuesta
Respuesta JSON de máximo 10 artículos, incluyendo enlaces al siguiente.
GET de la segunda página de 10 artículos
URL: http://example.com/jsonapi/node/article?page[limit]=10&page[offset]=10
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene el objeto JSON:API de un máximo de 10 artículos, incluyendo enlaces a anterior, siguiente, etc.
Para más información sobre paginación, consulta: https://www.drupal.org/docs/8/modules/jsonapi/pagination
GET de múltiples artículos ordenados
URL: http://example.com/jsonapi/node/article?sort=nid
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene el objeto JSON:API de artículos, ordenados por nid en orden ascendente. Usa &sort=-nid
para orden descendente.
Para más información sobre ordenación, consulta: https://www.drupal.org/node/2803141
GET de artículo filtrado por título
URL: http://example.com/jsonapi/node/article?filter[article-title][path]=title&filter[article-title][value]={{title_filter}}&filter[article-title][operator]==
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene el objeto JSON:API de artículos filtrados por el campo 'title' cuyo valor coincide con '{{title_filter}}'
Para más información sobre filtros, consulta: https://www.drupal.org/node/2943641
GET de la url y uri del campo de referencia de imagen (media entity) de un artículo incluyendo referencias
Sintaxis más reciente
URL:
http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_image&fields[file--file]=uri,url
Sintaxis anterior
URL: http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_image,field_image.image,field_image.image.file--file&fields[field_image]=image&fields[file--file]=uri,url
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene el objeto JSON:API con las relaciones de imagen media incluidas, correspondiente al nodo de artículo único con '{{article_uuid}}'
GET de artículo junto con todos los datos relacionados completos (autor, término de taxonomía, etc.)
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&include=uid
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta incluye un objeto de usuario con toda la información sobre el usuario asociado. La misma sintaxis funciona para otros datos relacionados como términos de taxonomía.
GET de artículo con campo de referencia a usuario, field_user_ref_example, y su perfil, ref_example_profile (campo de referencia dentro de otro campo de referencia)
URL: http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_user_ref_example,field_user_ref_example.ref_example_profile
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta incluye un objeto de usuario con toda la información sobre el usuario asociado y su perfil. La misma sintaxis funciona para otros datos relacionados que también contienen un campo de referencia.
GET de artículo junto con algunos datos relacionados seleccionados (autor, término de taxonomía, etc.)
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&fields[user--user]=name,mail&include=uid
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta incluye un objeto de usuario que contiene los campos especificados en el objeto relacionado (en este caso, nombre y correo electrónico del autor). La misma sintaxis funciona para otros datos relacionados como términos de taxonomía.
GET de cuentas de usuario
URL: http://example.com/jsonapi/user/user?filter[anon][condition][path]=uid&filter[anon][condition][value]=0&filter[anon][condition][operator]=<>
Respuesta
Respuesta HTTP 200. El cuerpo de la respuesta contiene el objeto JSON:API de las cuentas de usuario del sistema, excluyendo la cuenta de usuario anónima. Ten en cuenta que si quieres obtener una lista de todas las cuentas de usuario, debes usar la consulta anterior, ya que simplemente hacer una solicitud GET a /jsonapi/user/user
resultará en un error HTTP 403.
Obteniendo entidades de configuración
Como las entidades de configuración (menú, tipo de nodo, tour) no son iguales a las entidades de contenido (nodos, usuarios), esto es un poco más complejo. Actualmente las entidades de configuración son solo de lectura.
Para pruebas sencillas, usamos user-1 y el módulo basic_auth.
- Habilita el módulo basic auth
- Supón que el nombre de usuario user-1 es admin y la contraseña es admin
Usa el siguiente comando para listar los menús.
curl \
--header 'Accept: application/vnd.api+json' \
http://admin:admin@drupal.d8/jsonapi/menu/menu
Artículo de la Documentación de Drupal.