Endpoints Personnalisés
Créez des schémas personnalisés, avec des règles d'accès personnalisées pour différents utilisateurs, chacun disponible sous son propre endpoint.
Description
Un serveur GraphQL expose normalement un unique endpoint pour récupérer et envoyer des données.
En plus de prendre en charge l'endpoint unique, Gato GraphQL permet également de créer des endpoints personnalisés, fournissant différentes configurations de schéma pour répondre aux besoins de différentes cibles, telles que :
- Un client ou utilisateur spécifique
- Un groupe d'utilisateurs avec plus d'accès aux fonctionnalités (comme les utilisateurs PRO)
- L'une des plusieurs applications, comme une application mobile ou un site web
- Des API tierces
- Tout autre cas
L'endpoint personnalisé est un Custom Post Type, et son permalink est l'endpoint. Un endpoint avec le titre "My endpoint" et le slug my-endpoint sera accessible sous /graphql/my-endpoint/.

Clients
Chaque endpoint personnalisé dispose de son propre ensemble de clients pour interagir avec lui :
✅ Un client GraphiQL, disponible sous l'endpoint + ?view=graphiql (ex. : /graphql/my-endpoint/?view=graphiql).
Le module GraphiQL pour les Endpoints Personnalisés doit être activé.

✅ Un client Interactive schema, disponible sous l'endpoint + ?view=schema (ex. : /graphql/my-endpoint/?view=schema).
Le module Interactive Schema pour les Endpoints Personnalisés doit être activé.

Création d'un Endpoint Personnalisé
En cliquant sur le lien Endpoints Personnalisés dans le menu, la liste de tous les endpoints personnalisés créés s'affiche :

Un endpoint personnalisé est un custom post type (CPT). Pour créer un nouvel endpoint personnalisé, cliquez sur le bouton "Ajouter un Nouvel endpoint GraphQL", ce qui ouvrira l'éditeur WordPress :

Lorsque l'endpoint personnalisé est prêt, publiez-le, et son permalink devient son URL d'endpoint. Les liens vers l'endpoint (et vers la source et les clients) sont affichés dans le panneau latéral "Aperçu de l'Endpoint Personnalisé" :

En ajoutant ?view=source au permalink, cela affichera la configuration de l'endpoint (tant que l'utilisateur est connecté et que son rôle lui donne accès) :

Par défaut, l'endpoint personnalisé a le chemin /graphql/, et cette valeur est configurable via les Paramètres :

Configuration du schéma
La définition des éléments que contient le schéma, et de l'accès que les utilisateurs auront à celui-ci, est définie dans la configuration du schéma.
Nous devons donc créer une configuration du schéma, puis la sélectionner dans la liste déroulante :

Organisation des Endpoints Personnalisés par Catégorie
Dans le panneau latéral "Catégories d'endpoint", nous pouvons ajouter des catégories pour aider à gérer l'Endpoint Personnalisé :

Par exemple, nous pouvons créer des catégories pour gérer les endpoints par client, application, ou toute autre information nécessaire :

Dans la liste des Endpoints Personnalisés, nous pouvons visualiser leurs catégories et, en cliquant sur un lien de catégorie, ou en utilisant le filtre en haut, seules toutes les entrées de cette catégorie seront affichées :


Endpoints privés
En définissant le statut de l'Endpoint Personnalisé comme private, l'endpoint ne pourra être accessible que par l'utilisateur administrateur. Cela évite que nos données soient partagées par inadvertance avec des utilisateurs qui ne devraient pas y avoir accès.
Par exemple, nous pouvons créer des Endpoints Personnalisés privés qui aident à gérer l'application, comme la récupération de données pour créer des rapports avec nos métriques.

Endpoints protégés par mot de passe
Si nous créons un Endpoint Personnalisé pour un client spécifique, nous pouvons lui attribuer un mot de passe, afin de fournir un niveau de sécurité supplémentaire pour que seul ce client accède à l'endpoint.

Lorsqu'on accède pour la première fois à un endpoint protégé par mot de passe (que ce soit en accédant directement à l'endpoint, ou à ses clients GraphiQL ou Interactive Schema), on rencontre un écran demandant le mot de passe :

Une fois le mot de passe fourni et validé, seulement alors l'utilisateur accédera à l'endpoint ou au client prévu :
