Je dois créer un service de repos qui fournit les données actuelles:
getNode (nid) -> tous les champs de noeud -> si le champ est une référence d'entité (comme un fichier, des URL lisibles par l'homme) -> inclure des sous-champs -> si le champ est de type paragraphe, inclure à nouveau les sous-champs sous une forme lisible par l'homme
Il semble que Drupal n'est pas encore prêt pour Rest sans avoir à créer de nouvelles requêtes pour chaque tranquillité de contenu référencé avec un identifiant.
Par exemple, j'ai une sortie de type mur Pinterest. Chaque élément est créé en utilisant un élément de paragraphe (parfois avec d'autres références comme la taxonomie, etc.)
Je veux une liste json propre. Structuré correctement sans manquer d'éléments imbriqués comme les paragraphes, les références de fichier ou de taxonomie. En ce moment, je viens de récupérer les identifiants des éléments référencés.
Dois-je appeler maintenant plus de 100 demandes pour collecter toutes les données de ce mur?
1) Ou dois-je faire une demande de collecte du nœud:
2) Une autre demande de collecte de toutes les références d'entité de 1er niveau. Ensuite, pour les stocker dans un tableau.
3) Faire ensuite une demande de références d'entité de 2e niveau.
Cela me semble horrible quand il s'agit de questions sur les frais généraux et le temps.
Bien sûr, j'ai vérifié certains modules qui devraient aider à résoudre ce problème:
module rest_export_nested qui ne fonctionne pas avec les types d'entités paragraphes
rest_views semble produire les champs en html au lieu de json. Jusqu'à présent, il n'y a pas de véritable solution.
Alors que faire? Une autre façon pourrait être de créer une vue des paragraphes avec l'ID cible de [NODE_ID]. Mais cela ne fonctionnerait que pour les paragraphes de 1er niveau. Le problème persisterait pour les paragraphes imbriqués.
Est-ce vraiment la seule façon de créer un module personnalisé qui crée son propre service de repos?
L'API JSON est-elle peut-être une autre solution que je n'ai pas étudiée jusqu'à présent?
Toute contribution est appréciée. Merci.
Non. Core REST & REST Les vues ne sont pas la bonne solution ici. Vous n'avez pas besoin d'un module personnalisé pour cela.).
Comme vous l'avez mentionné, le module API JSON prend en charge l'inclusion de références d'entité dans une seule demande de ressource . Chaque entité demandée a une propriété appelée relationships
qui sont des références à d'autres entités qui peuvent être incluses via le paramètre include
. Les références, dans les références (par exemple, un nœud référençant une entité multimédia, qui référence une entité de fichier) sont également prises en charge, mais avec un peu de travail pour suivre les références (par exemple lorsque vous demandez une inclusion via la propriété include
qui vous est donnée une propriété de tableau, included
, que vous devez toujours trier via id).
Si vous recherchez une Drupal API qui suit les références d'entité dans les objets d'entité renvoyés, vous devez utiliser GraphQL module car il vous permettra de définir vos propres spécifications de données qui peuvent développer les références d'entité comme bon vous semble.