APIs pour WordPress

Gato GraphQL vs WP REST API

Comparaison entre Gato GraphQL et la WP REST API

Gato GraphQL vs WP REST API
plus image
Gato GraphQL vs WP REST API

Les différences entre les APIs REST et GraphQL sont généralement valables lorsqu'on compare la WP REST API avec Gato GraphQL.

Avec GraphQL, vous pouvez exĂ©cuter une requĂȘte GraphQL adaptĂ©e contre un endpoint, en indiquant les donnĂ©es spĂ©cifiques dont vous avez besoin, et en rĂ©cupĂ©rant uniquement ces donnĂ©es dans une seule requĂȘte.

Par exemple, la requĂȘte GraphQL suivante rĂ©cupĂ©rera les donnĂ©es nĂ©cessaires pour un article spĂ©cifique, y compris les donnĂ©es de ses relations (auteur, catĂ©gories et Ă©tiquettes), le tout dans une seule requĂȘte :

query {
  post(by: { id: 1 }) {
    title
    content
    url
    date
    author {
      id
      name
    }
    categories {
      id
      name
    }
    tags {
      id
      name
    }
  }
}

Pour rĂ©cupĂ©rer les mĂȘmes donnĂ©es avec REST, vous devrez peut-ĂȘtre d'abord exĂ©cuter une requĂȘte pour rĂ©cupĂ©rer les donnĂ©es de l'article, puis une requĂȘte supplĂ©mentaire pour chacune de ses relations (auteur, catĂ©gories et Ă©tiquettes) afin d'en obtenir les donnĂ©es.

Ces différences architecturales entre REST et GraphQL ont été largement abordées ailleurs, donc nous ne les répéterons pas ici.

Ci-dessous, faisons une comparaison plus spécifique entre Gato GraphQL + toutes les extensions, et la WP REST API.

Tableau récapitulatif

FonctionnalitéGato GraphQLWP REST API
RĂ©cupĂ©ration de donnĂ©esExĂ©cute des requĂȘtes GraphQL adaptĂ©es contre un endpoint, rĂ©cupĂ©rant des donnĂ©es spĂ©cifiques en une seule requĂȘte.NĂ©cessite plusieurs requĂȘtes vers diffĂ©rents endpoints pour rĂ©cupĂ©rer des donnĂ©es liĂ©es (ex. : donnĂ©es d'articles, auteur, catĂ©gories et Ă©tiquettes).
EndpointsPrend en charge les Persisted queries, qui sont des endpoints avec des données prédéfinies créés à l'aide du langage GraphQL via une interface dans le wp-admin, sans avoir à déployer du code.Expose les données via des endpoints REST, chacun avec sa propre URL et ses données prédéfinies, créés via du code PHP et déployés dans un thÚme ou un plugin.
ContrÎle d'accÚsOffre de la flexibilité avec un contrÎle d'accÚs au niveau des champs basé sur des rÚgles (ex. : rÎles d'utilisateurs, capacités, plage IP).Restreint les données selon le paramÚtre context (ex. : view pour les utilisateurs non authentifiés, edit pour les utilisateurs authentifiés avec les permissions).
OpĂ©rations en massePrend en charge la ExĂ©cution de multiples requĂȘtes, oĂč un seul document GraphQL peut exĂ©cuter plusieurs opĂ©rations pouvant partager un Ă©tat via la directive @export, amĂ©liorant les batch requests.Permet les batch requests, oĂč plusieurs requĂȘtes sont satisfaites en interne dans une seule requĂȘte HTTP.
Gestion du sitePeut récupérer des données, les modifier et les stocker en retour dans un seul document GraphQL via des interfaces utilisateur, permettant l'automatisation et la gestion de sites WordPress. Peut effectuer les tùches de plusieurs plugins comme la duplication, l'automatisation, les sauvegardes, la recherche/remplacement, les webhooks et la traduction. C'est une API et bien plus.Principalement une API pour accéder et manipuler des données WordPress.
GĂ©nĂ©ralitĂ©Un outil gĂ©nĂ©rique pour gĂ©rer des sites WordPress, capable de muter des donnĂ©es et de s'intĂ©grer avec des services tiers via des requĂȘtes GraphQL.AxĂ© sur la fourniture d'une API ; nĂ©cessite des plugins supplĂ©mentaires ou du code personnalisĂ© pour atteindre des fonctionnalitĂ©s similaires.

Résumé des points clés :

  • RĂ©cupĂ©ration de donnĂ©es : Gato GraphQL utilise des requĂȘtes adaptĂ©es, tandis que la WP REST API utilise plusieurs requĂȘtes vers des endpoints.
  • Endpoints : Gato GraphQL utilise des persisted queries créées via une UI, tandis que la WP REST API utilise des endpoints REST codĂ©s en PHP.
  • ContrĂŽle d'accĂšs : Gato GraphQL offre un contrĂŽle au niveau des champs, tandis que la WP REST API utilise le paramĂštre context.
  • OpĂ©rations en masse : Gato GraphQL utilise la Multiple Query Execution, et la WP REST API utilise les batch requests.
  • Gestion du site : Gato GraphQL est un outil complet, et la WP REST API est principalement une API.

AccÚs aux données prédéfinies

Avec la WP REST API, vous exposez des données via des endpoints REST. Chaque endpoint possÚde sa propre URL, et ses données sont prédéfinies (pour les ressources correspondantes, telles que les articles ou les utilisateurs).

De façon similaire aux endpoints REST, Gato GraphQL prend en charge les Persisted queries, qui sont Ă©galement des endpoints avec des donnĂ©es prĂ©dĂ©finies. Faire une requĂȘte Ă  une persisted query via GET exĂ©cutera la requĂȘte GraphQL stockĂ©e et produira la rĂ©ponse JSON attendue :

Exécution d'une persisted query dans le navigateur
Exécution d'une persisted query dans le navigateur

La diffĂ©rence entre eux est que les endpoints de la REST API sont créés via du code PHP et doivent ĂȘtre dĂ©ployĂ©s dans un thĂšme ou un plugin, tandis que les persisted queries de Gato GraphQL sont créées Ă  l'aide du langage GraphQL et sont publiĂ©es via une interface utilisateur (propulsĂ©e par l'Ă©diteur WordPress) dans le wp-admin, sans avoir besoin de dĂ©ployer de code.

Éditeur de persisted query
Éditeur de persisted query

Les mĂȘmes mĂ©canismes de cache peuvent ĂȘtre appliquĂ©s aux endpoints REST et aux persisted queries GraphQL. Puisque la persisted query est accessible sous son propre endpoint, sa rĂ©ponse peut ĂȘtre mise en cache avec le cache HTTP standard (PRO).

ContrĂŽle d'accĂšs

La restriction des données dans la WP REST API dépend du paramÚtre context. Passer ?context=view produit des données pour les utilisateurs non authentifiés, et ?context=edit inclut des données supplémentaires pour les utilisateurs authentifiés (avec les bonnes permissions), telles que le champ content.raw de l'article.

Gato GraphQL offre beaucoup plus de flexibilité, chaque champ étant accessible ou non selon les rÚgles de 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 à un champ spécifique (PRO).

Éditeur de la liste de contrîle d'accùs
Éditeur de la liste de contrîle d'accùs

Opérations en masse

La WP REST API permet d'exĂ©cuter des batch requests, oĂč plusieurs requĂȘtes sont satisfaites en interne 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 des batch requests, 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
  }
}

Gestion du site WordPress

Gato GraphQL nous permet de récupérer des données depuis la base de données, de les modifier selon les besoins et de les stocker en retour, le tout dans un seul document GraphQL.

Cela est rĂ©alisĂ© via des interfaces utilisateur, pour composer et publier les requĂȘtes GraphQL, configurer les endpoints selon les besoins et automatiser l'exĂ©cution d'une requĂȘte lorsqu'un Ă©vĂ©nement se produit.

Tout cela signifie que Gato GraphQL est un outil gĂ©nĂ©rique pour gĂ©rer nos sites WordPress, satisfaisant les cas d'utilisation oĂč des donnĂ©es (que ce soit depuis le site WordPress ou fournies par des services tiers) doivent ĂȘtre mutĂ©es, car cela peut ĂȘtre accompli en exĂ©cutant une requĂȘte GraphQL.

Remarquez comment Gato GraphQL peut remplir les fonctionnalités de plusieurs plugins :

La WP REST API n'est que cela, une API.

Gato GraphQL est aussi une API, mais aussi bien plus.

Abonnez-vous Ă  notre newsletter

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