Identifiants GraphQL et nœuds
La différence entre un slug et un identifiant GraphQL, et comment la requête node lit n’importe quel objet à partir de son identifiant.
L’API d’Elium suit la spécification serveur de Relay pour identifier les objets. L’une de ses notions revient dans presque tous les guides : le nœud (node).
Deux identifiants : le slug et l’identifiant GraphQL
La plupart des objets d’Elium ont deux identifiants.
- Le slug est le numéro que vous voyez dans la barre d’adresse :
123danshttps://nom-de-votre-plateforme.elium.com/tile/view/123/. Il n’est unique qu’au sein d’un type d’objet. Un utilisateur et une story peuvent tous deux avoir le slug123, parce que ce sont des types différents. - L’identifiant GraphQL est une chaîne générée par le serveur, comme
U3Rvcnk6MTIz. Il est unique parmi tous les objets, tous types confondus. Les mutations attendent des identifiants GraphQL, pas des slugs, à de rares exceptions près commestoryUndelete.
Les requêtes comme story(slug:) et space(slug:) acceptent un slug et renvoient l’objet avec son champ id, qui est l’identifiant GraphQL. C’est la façon habituelle d’obtenir l’identifiant dont une mutation a besoin.
La requête node
Tout objet doté d’un identifiant GraphQL implémente l’interface Node, qui n’a qu’un champ, id. La requête node renvoie n’importe lequel de ces objets à partir de son identifiant.
Comme node peut renvoyer n’importe quel type, vous devez indiquer le type et les champs attendus dans un fragment en ligne, ... on Story dans cet exemple :
query {
node(id: "U3Rvcnk6MTIz") {
... on Story {
id
version {
title
}
user {
name
}
}
}
}
Si l’identifiant appartient à un autre type, le fragment ne s’applique pas et le résultat ne contient aucun de ces champs. La page Les interfaces GraphQL explique le mécanisme.
Le guide Lire une story montre côte à côte les deux façons de lire la même story : par slug et par nœud.