Serveurs GraphQL pour WordPress

Gato GraphQL vs WPGraphQL

Comparaison entre Gato GraphQL et WPGraphQL

Gato GraphQL vs WPGraphQL
plus image
Gato GraphQL vs WPGraphQL

Si vous avez seulement besoin de créer un site WordPress headless et de le déployer en statique, et que vous utilisez actuellement WPGraphQL, passer à Gato GraphQL ne fera aucune différence.

Dans les autres cas, passer Ă  Gato GraphQL offre de nombreux avantages. Voici les avantages fournis par Gato GraphQL + toutes les extensions, que WPGraphQL ne propose pas.

Tableau récapitulatif

FonctionnalitéGato GraphQLWPGraphQL
Problème N+1Ce n'est pas un problème grâce à la conception architecturalePeut être un problème si non géré ; le développeur doit en être conscient
Sécurité : désactivation de l'endpointPeut désactiver entièrement l'endpoint unique avec les persisted queries (PRO)Non disponible
Contrôle d'accèsValidation champ par champ, avec rôles/capacités/IP, via UI (PRO)Pas au niveau des champs, moins granulaire
Contrôle du cachemax-age calculé automatiquement pour les requêtes (PRO)Pas de contrôle de cache automatique
Endpoints personnalisésEndpoints multiples, protégés par mot de passe/personnalisables ; hiérarchie d'endpoints prise en charge (PRO)Endpoint unique, personnalisation limitée
Mises à jour en masse et recherche/remplacementSuppression en masse, étiquetage, remplacement (avec regex), via GraphQL (PRO)Non disponible
Fonctionnalités GraphQL personnalisées/expérimentalesMutations imbriquées, schema namespacing, oneOf input objectPrincipalement la spécification GraphQL standard
Multiple Query Execution (composabilité)Plusieurs requêtes dans un document, partage d'état avec @exportRequêtes en lot (plusieurs par requête), mais ne peuvent pas partager d'état
Endpoints internes/privésEndpoint privé pour le backend/PHP uniquement, non exposé aux utilisateurs (PRO)Non disponible
Mutation de données richeRécupérer, modifier et persister les données dans un seul document (PRO)Non pris en charge
Synchronisation et distribution de contenuImport/export via GraphQL, RSS, CSV, REST API (PRO)Non disponible
Intégration de services webAppels API sortants/entrants et webhooks (PRO)Non pris en charge
Automatisation (hooks/flux de travail)GraphQL comme automatisation de flux de travail (PRO/éditeur UI)Non disponible
Facilité d'utilisation (intégration UI)Fonctionnalités UI étendues pour créer/administrer des requêtes GraphQLUI d'administration plus basique
Batching/composabilitéComposition de champs/directives, logique de résolveur réutilisable (PRO)Non pris en charge
Multiple Query ExecutionPris en charge, avec état partagé et dépendancesPris en charge, sans partage d'état
Utilisation headless/statique standardLes deux sont également capablesLes deux sont également capables

Légende :

  • (PRO): Indique que la fonctionnalitĂ© nĂ©cessite la version payante/pro ou les extensions de Gato GraphQL.

Résumé des points clés :

  • Gato GraphQL offre des fonctionnalitĂ©s supplĂ©mentaires importantes pour le dĂ©veloppement avancĂ©, l'automatisation et la sĂ©curitĂ©
  • Les deux plugins sont Ă©quivalents pour les installations WordPress statiques/headless de base
  • Les fonctionnalitĂ©s avancĂ©es de Gato GraphQL se concentrent sur :
    • Le contrĂ´le granulaire
    • L'automatisation des flux de travail
    • Les intĂ©grations riches
    • Les fonctionnalitĂ©s GraphQL expĂ©rimentales modernes

Facilité de développement

Les développeurs n'ont pas à se préoccuper du problème des requêtes "n+1" : en raison de la conception architecturale du serveur GraphQL, cela ne se produit tout simplement pas.

Sécurité

Lorsque vous utilisez des persisted queries pour exposer des données prédéfinies, vous pouvez désactiver complètement l'endpoint unique GraphQL, de sorte qu'il ne soit pas accessible même aux utilisateurs authentifiés.

Éditeur de persisted query
Éditeur de persisted query

Contrôle d'accès

Vous pouvez valider que seuls les utilisateurs connectés, ou les utilisateurs avec un certain rôle ou une certaine capacité, ou les visiteurs d'une certaine plage IP, peuvent accéder aux données, champ par champ (PRO).

Éditeur de la liste de contrôle d'accès
Éditeur de la liste de contrôle d'accès

ContrĂ´le du cache

Lors de la mise en cache de la réponse GraphQL avec le cache HTTP standard, l'en-tête max-age est calculé automatiquement à partir de tous les champs présents dans la requête GraphQL (PRO).

Éditeur de la liste de contrôle du cache

Personnalisation et gestion des endpoints

Vous pouvez fournir plusieurs endpoints personnalisés, chacun personnalisé pour un client ou une application spécifique, les protégeant via un mot de passe.

Et vous pouvez leur ajouter des catégories personnalisées et leur donner une hiérarchie (comme /graphql/customers/some-customer et /graphql/customers/another-customer).

Endpoint personnalisé protégé par mot de passe
Endpoint personnalisé protégé par mot de passe

Mises Ă  jour en masse

Vous pouvez exécuter des mises à jour en masse. Par exemple, vous pouvez supprimer tous les commentaires du site, ou assigner une étiquette ou une catégorie à tous vos articles.

Et vous pouvez rechercher et remplacer une chaîne sur des centaines d'articles, par exemple pour remplacer l'ancien domaine par le nouveau, et même en utilisant une regex (PRO).

Fonctionnalités GraphQL personnalisées

Vous aurez accès à de nouvelles fonctionnalités GraphQL, proposées pour la spécification mais pas encore publiées, notamment les mutations imbriquées, le schema namespacing et l'objet d'entrée 'oneOf'.

Schéma interactif avec namespaces
Schéma interactif avec namespaces

Multiple Query Execution

WPGraphQL permet d'exécuter des requêtes en lot, où plusieurs requêtes GraphQL sont résolues dans une seule requête HTTP.

Gato GraphQL fournit la Exécution de multiples requêtes, où un seul document GraphQL peut exécuter plusieurs opérations.

Multiple Query Execution est une amélioration du batching de requêtes, car les opérations peuvent partager un état entre elles via la directive @export.

Par exemple, pour dupliquer un article, nous avons une opération query qui récupère les données de l'article et passe ces données à une opération mutation qui crée un nouvel article avec :

query GetPostAndExportData($postId: ID!)
{
  post(by: { id: $postId }, status: any) {
    author {
      id @export(as: "authorID")
    }
    categories {
      id @export(as: "categoryIDs", type: LIST)
    }
    rawContent @export(as: "rawContent")
    rawExcerpt @export(as: "excerpt")
    featuredImage {
      id @export(as: "featuredImageID")
    }
    tags {
      id @export(as: "tagIDs", type: LIST)
    }
    rawTitle @export(as: "title")
  }
}
 
mutation DuplicatePost
  @depends(on: "GetPostAndExportData")
{
  createPost(input: {
    status: draft,
    authorBy: {
      id: $authorID
    },
    categoriesBy: {
      ids: $categoryIDs
    },
    contentAs: {
      html: $rawContent
    },
    excerpt: $excerpt
    featuredImageBy: {
      id: $featuredImageID
    },
    tagsBy: {
      ids: $tagIDs
    },
    title: $title
  }) {
    postID
  }
}

Composabilité

Vous aurez la possibilité de composer des champs, où la valeur d'un champ peut être fournie comme entrée d'un autre champ dans la même requête, permettant à un ensemble fondamental de résolveurs de champs de couvrir un nombre illimité de cas d'utilisation (PRO).

Par exemple, au lieu de créer le champ Post.hasExcerpt, nous pouvons appliquer le champ _notEmpty sur Post.excerpt pour produire la même valeur :

query {
  post(by: { id: 1 }) {
    excerpt 
    hasExcerpt: _notEmpty(value: $__excerpt)
  }
}

De même, vous pouvez composer des directives, de sorte qu'une directive puisse être appliquée sur une propriété interne de la valeur du champ.

Par exemple, la requête suivante traduit les noms de catégories de l'article dans une autre langue :

query {
  post(by: { id: 1 }) {
    title
    categoryNames
    frenchCategoryNames: categoryNames
      @underEachArrayItem
        @strTranslate(
          from: "en",
          to: "fr"
        )
  }
}

Disponibilité du serveur GraphQL

Vous pouvez exposer des endpoints privés pour alimenter vos blocs Gutenberg. Et vous pouvez accéder à un serveur GraphQL privé, pour récupérer des données pour votre application via du code PHP, sans exposer aucun endpoint public (PRO).

Polyvalence dans la mutation des données

Vous pouvez utiliser GraphQL pour récupérer, modifier et finalement stocker à nouveau le contenu de votre site, le tout dans un seul document GraphQL (PRO).

Par exemple, vous pouvez récupérer tous les blocs Gutenberg dans un article, extraire leurs propriétés, traduire ces chaînes via l'API Google Translate, réinsérer ces chaînes dans le bloc, et enregistrer à nouveau l'article.

Synchronisation et distribution de contenu

Vous pouvez utiliser GraphQL pour importer des articles depuis un autre site WordPress, depuis un flux RSS, depuis un CSV, ou depuis n'importe quelle API REST ou GraphQL (PRO).

Vous pouvez exporter du contenu vers un autre site WordPress, et le stocker en JSON et CSV (PRO).

Interaction avec les services web

Vous pouvez invoquer l'API de n'importe quel service externe via un client HTTP (PRO). Par exemple, vous pouvez abonner vos utilisateurs WordPress Ă  votre liste de diffusion Mailchimp.

Et vous pouvez recevoir et traiter des données entrantes de n'importe quel service via un webhook dédié (PRO). Par exemple, vous pouvez capturer les adresses email de newsletter enregistrées dans un site sandbox InstaWP et les envoyer automatiquement à Mailchimp.

Automatisation

Vous pouvez utiliser GraphQL pour automatiser des tâches et des flux de contenu (PRO).

Par exemple, lorsqu'un nouvel article est créé (événement via le hook draft_post), vous pouvez exécuter une persisted query qui vérifie si l'article n'a pas de miniature et, dans ce cas, génère une image en appelant l'API Stable Diffusion, la compresse via TinyPng, et insère finalement l'image comme image à la une de l'article.

Éditeur de règles d'automatisation
Éditeur de règles d'automatisation

Facilité d'utilisation

Tous ces cas d'utilisation supplémentaires peuvent être réalisés directement dans le wp-admin, en fournissant la requête GraphQL via une interface utilisateur, sans avoir à déployer de code PHP.

Abonnez-vous Ă  notre newsletter

Restez au courant de toutes les nouveautés de Gato GraphQL.