Configurer le schéma
Configurer le schémaEspaces de noms dans le schéma

Espaces de noms dans le schéma

Faites en sorte que tous les types et interfaces ajoutés au schéma par des plugins reçoivent automatiquement des espaces de noms.

Appliquer des espaces de noms au schéma évite les conflits de noms, qui surviennent lorsque différents propriétaires (p. ex. : différentes équipes dans l'entreprise, ou entre plugins tiers) utilisent le même nom pour un type ou une interface.

Par exemple, supposons que l'entreprise "AwesomeWP" dispose d'une équipe Tutoriels et d'une équipe Ventes, et que toutes deux créent un type Product pour le schéma GraphQL de l'entreprise, provoquant un conflit.

En appliquant des espaces de noms au schéma, les deux types seraient automatiquement convertis en AwesomeWPTutorialsProduct et AwesomeWPSalesProduct, évitant le conflit sans avoir à modifier manuellement le schéma, ni à faire interagir les équipes entre elles.

Les entités du modèle de données WordPress ne sont pas soumises aux espaces de noms

Le modèle de données WordPress est considéré comme canonique, et ses types de schéma GraphQL (tels que Post et User) et interfaces (tels que Commentable et WithMeta) ne sont pas soumis aux espaces de noms.

Appliquer des espaces de noms au schéma dans les endpoints

Il existe 2 niveaux auxquels nous pouvons définir si le schéma sera soumis aux espaces de noms ou non. Par ordre de priorité :

1. Dans la configuration du schéma

L'application des espaces de noms au schéma pour un custom endpoint ou une persisted query peut être définie via la configuration de schéma correspondante :

Namespacing, configuré dans la Schema configuration

2. Mode par défaut, défini dans les Réglages

Si la configuration du schéma a la valeur "Default", elle utilisera le mode défini dans les Réglages :

Namespacing dans les Réglages
Namespacing dans les Réglages

Visualiser le schéma avec espaces de noms

Utilisez le client Voyager pour visualiser le schéma avec espaces de noms.

Lorsque les espaces de noms sont désactivés, le schéma WordPress ressemble à ceci :

Schéma interactif

Lorsqu'ils sont activés, les types et interfaces ajoutés par des plugins sont soumis aux espaces de noms, et ressemblent à ceci :

Schéma interactif avec espaces de noms

Interroger des noms de types (non-)soumis aux espaces de noms

Une fois les espaces de noms activés, les types peuvent être interrogés en utilisant aussi bien leurs noms avec espaces de noms que sans. Ainsi, seules les requêtes impliquant des types en conflit doivent être modifiées, et non toutes.

Par exemple, si l'équipe Ventes d'AwesomeWP dispose également d'un type Discount, une requête demandant ce nom de type fonctionne toujours :

query {
  discounts {
    ...DiscountProps
  }
}
 
fragment DiscountProps on Discount {
  price
  dateRange
}

Seul le type en conflit Product devrait être mis à jour en AwesomeWPSalesProduct dans la requête, afin d'éliminer toute ambiguïté :

query {
  products {
    ...ProductProps
  }
}
 
fragment ProductProps on AwesomeWPSalesProduct {
  price
  dateRange
}

Spécification GraphQL

Cette fonctionnalité ne fait actuellement pas partie de la spécification GraphQL, mais elle a été demandée dans :