@ -24,9 +24,11 @@ Grâce au [schéma d'introspection](https://graphql.org/learn/introspection/), l
- Le type scalaire personnalisé `Date` qui permet d'indiquer le format des dates attendu
- Le type `MetaList` qui représente les metas exposées
- Le type `ENUM Collection` pour récupérer les collections exposées
- Le type `Interface Node` utilisé par tous les objets. Ce type expose les champs `id`, `slug`, `typeCollection`, `points` et `rang`
- Le type `Interface Objet` utilisé par les objets éditoriaux (sauf `Auteurs` et `Syndic`). Ce type expose les champs `id`, `titre`, `texte`, `slug`, `typeCollection`, `points`, `rang` et `maj`
- Les types `MonObjet` liés aux objets éditoriaux (implémentant `Objet` ou non). Le champs `points` (et non le shampooing :p ) sert lors de la requête `recherche`. Il y a aussi le champ `slug`, le champ `type` (il existe aussi le champ `__typeName` fourni par graphQL) et le champ `rang` qui ont été ajoutés.
- Le type `Pagination` pour connaître la page courante et le nombre de pages total dans une collection.
- Le type `Interface Objet` utilisé par les objets éditoriaux pour partager des champs en communs. Ce type expose les champs `id`, `titre`, `descriptif`, `logo`, `maj`, `slug`, `typeCollection`, `points` et `rang`. Le champs `points` (et non le shampooing :p ) sert lors de la requête `recherche`. Le champs `rang` sert lorsqu'un préfixe est utilisé dans le titre de l'objet. Le champ `typeCollection` représente une des collections exposées et est de type `ENUM Collection`. Le champ slug sert à slugifier le titre (il faudrait pouvoir récupérer un objet par son slug). Les autres champs de la BDD peuvent être sélectionnés dans le Back-Office.
- Les types `MonObjet` (par ex : `Article`) liés aux objets éditoriaux.
- Les types `MonObjetPagination` (par ex : `ArticlePagination`) permet de rettourner une liste de `MonObjet` avec la pagination.
- Le type `SearchResult` (utilisé dans la recherche) permet de retourner n'importe quel type d'objet éditorial exposé.
### c. Les requêtes disponibles
Les requêtes disponibles sont aussi affichées par les clients grâce au schéma d'introspection.
@ -42,32 +44,63 @@ Les requêtes `getMonObjet` reçoivent un `id` en paramètre et les requêtes `m
- `pagination` pour indiquer le nombre d'items dans la pagination
- `page` pour indiquer la page voulue dans la pagination
L'API gère les relations 1 => N et les relations N => N (Attention à bien exposer les collections liées et les clés étrangères dans la liste des champs dans le backoffice).
## 4. Tester les requêtes
Le endpoint est joignable sur `spip.php?action=graphql`
Vous pouvez utiliser [graphiql](https://github.com/graphql/graphiql) qui est intégré dans le plugin ou une extension pour votre navigateur. Concernant Firefox, j'utilise [Altair GraphQL Client](https://addons.mozilla.org/fr/firefox/addon/altair-graphql-client/). A part pour le client intégré qui pointe directement sur votre endpoint, il faut renseigner l'url complète de votre API : http://domain.local/spip.php?action=graphql
Dans le client intégré, un plugin a été rajouté pour faciliter la construction de vos requêtes.