Récupération des ressources (GET)
Cette page montre des exemples de différentes requêtes GET pour le module JSON:API.
Dans tous les exemples ci-dessous, aucun en-tête de requête n’est requis. Aucune authentification n’est nécessaire si les utilisateurs anonymes peuvent accéder aux entités de contenu. Pour les entités de configuration comme les menus, voir les dernières sections.
Notez que dans tous les cas, lorsqu’un identifiant est nécessaire, c’est toujours l’uuid de l’entité, pas l’id de l’entité.
En-tête Accept
Assurez-vous d’envoyer toujours l’en-tête accept : Accept: application/vnd.api+json.
curl \
--header 'Accept: application/vnd.api+json' \
....
Exemple basique de GET
URL : http://example.com/jsonapi/node/article/{{article_uuid}}
Réponse
Réponse HTTP 200. Le corps de la réponse contient l’objet JSON:API d’un seul nœud article, incluant attributs, relations et liens.
GET de plusieurs articles
URL : http://example.com/jsonapi/node/article
Réponse
Réponse HTTP 200. Le corps de la réponse contient l’objet JSON:API d’un maximum de 50 articles, incluant le lien vers la page suivante.
GET des 10 premiers articles
URL : http://example.com/jsonapi/node/article?page[limit]=10
Réponse
Réponse JSON d’un maximum de 10 articles, incluant les liens vers la page suivante.
GET de la deuxième page de 10 articles
URL : http://example.com/jsonapi/node/article?page[limit]=10&page[offset]=10
Réponse
Réponse HTTP 200. Le corps de la réponse contient l’objet JSON:API d’un maximum de 10 articles, incluant les liens vers la page précédente, suivante, etc.
Pour plus d’informations sur la pagination, voir : https://www.drupal.org/docs/8/modules/jsonapi/pagination
GET de plusieurs articles triés
URL : http://example.com/jsonapi/node/article?sort=nid
Réponse
Réponse HTTP 200. Le corps de la réponse contient l’objet JSON:API des articles, triés par nid croissant. Utilisez &sort=-nid
pour un tri décroissant.
Pour plus d’informations sur le tri, voir : https://www.drupal.org/node/2803141
GET d’un article filtré par titre
URL : http://example.com/jsonapi/node/article?filter[article-title][path]=title&filter[article-title][value]={{title_filter}}&filter[article-title][operator]==
Réponse
Réponse HTTP 200. Le corps de la réponse contient l’objet JSON:API des articles, filtrés par la valeur du champ 'title' correspondant à '{{title_filter}}'
Pour plus d’informations sur les filtres, voir : https://www.drupal.org/node/2943641
GET article avec champ de référence média field_image url, uri en incluant les références
Syntaxe récente :
http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_image&fields[file--file]=uri,url
Syntaxe plus ancienne :
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
Réponse
Réponse HTTP 200. Le corps de la réponse contient l’objet JSON:API des relations médias incluses, correspondant au nœud article unique identifié par '{{article_uuid}}'
GET article avec ensemble complet de données associées (auteur, terme de taxonomie, etc.)
URL : http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&include=uid
Réponse
Réponse HTTP 200. Le corps de la réponse inclut un objet utilisateur contenant toutes les informations sur l’utilisateur associé. La même syntaxe fonctionne pour d’autres données liées comme les termes de taxonomie.
GET article avec champ de référence utilisateur, field_user_ref_example, et son profil, ref_example_profile (champ de référence dans un champ de référence)
URL : http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_user_ref_example,field_user_ref_example.ref_example_profile
Réponse
Réponse HTTP 200. Le corps de la réponse inclut un objet utilisateur contenant toutes les informations sur l’utilisateur associé ainsi que son profil. La même syntaxe fonctionne pour d’autres données liées contenant aussi un champ de référence.
GET article avec éléments de données associées sélectionnés (auteur, terme de taxonomie, etc.)
URL : http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&fields[user--user]=name,mail&include=uid
Réponse
Réponse HTTP 200. Le corps de la réponse inclut un objet utilisateur contenant les champs spécifiés dans l’objet lié (dans ce cas, nom et email de l’auteur). La même syntaxe fonctionne pour d’autres données liées comme les termes de taxonomie.
GET comptes utilisateurs
URL : http://example.com/jsonapi/user/user?filter[anon][condition][path]=uid&filter[anon][condition][value]=0&filter[anon][condition][operator]=<>
Réponse
Réponse HTTP 200. Le corps de la réponse contient l’objet JSON:API des comptes utilisateurs du système, à l’exception du compte utilisateur anonyme. Notez que pour obtenir la liste de tous les comptes utilisateurs, vous devez utiliser la requête ci-dessus, car une simple requête GET vers /jsonapi/user/user
renverra une erreur HTTP 403.
Récupération des entités de configuration
Comme les entités de configuration (menu, type de nœud, visite guidée) ne sont pas équivalentes aux entités de contenu (nœuds, utilisateurs), cela est un peu plus complexe. Actuellement, les entités de configuration sont en lecture seule.
Pour faciliter les tests, nous utilisons l’utilisateur 1 et le module basic_auth.
- Activez le module basic_auth
- Supposons que le nom d’utilisateur de l’utilisateur 1 est admin et que le mot de passe est admin
La commande suivante listera les menus :
curl \
--header 'Accept: application/vnd.api+json' \
http://admin:admin@drupal.d8/jsonapi/menu/menu
Article extrait de la documentation Drupal.