Gato GraphQL vs WP REST API
Confronto tra Gato GraphQL e la WP REST API


Le differenze tra le API REST e GraphQL sono generalmente valide quando si confronta la WP REST API con Gato GraphQL.
Con GraphQL puoi eseguire una query GraphQL su misura verso un endpoint, indicando quali dati specifici ti servono e recuperando solo quei dati in un'unica richiesta.
Ad esempio, la seguente query GraphQL recupererà i dati necessari per un post specifico, comprese le informazioni delle sue relazioni (autore, categorie e tag), il tutto in un'unica richiesta:
query {
post(by: { id: 1 }) {
title
content
url
date
author {
id
name
}
categories {
id
name
}
tags {
id
name
}
}
}Per recuperare gli stessi dati con REST, potresti dover eseguire prima una richiesta per ottenere i dati del post e una richiesta successiva per ciascuna delle sue relazioni (autore, categorie e tag) per recuperarne i dati.
Queste differenze architetturali tra REST e GraphQL sono state ampiamente trattate altrove, quindi d'ora in poi non le ripeteremo qui.
Di seguito, facciamo un confronto più specifico tra Gato GraphQL + tutte le estensioni e la WP REST API.
Tabella riepilogativa
| Funzionalità | Gato GraphQL | WP REST API |
|---|---|---|
| Recupero dei dati | Esegue query GraphQL su misura verso un endpoint, recuperando dati specifici in un'unica richiesta. | Richiede più richieste verso endpoint diversi per recuperare i dati correlati (es.: dati del post, dati dell'autore, categorie e tag). |
| Endpoint | Supporta le Persisted Queries, che sono endpoint con dati predefiniti creati usando il linguaggio GraphQL tramite un'interfaccia utente all'interno della wp-admin, senza dover distribuire codice. | Espone i dati tramite endpoint REST, ognuno con il proprio URL e dati predefiniti, creati tramite codice PHP e distribuiti all'interno di un tema o di un plugin. |
| Controllo degli accessi | Offre flessibilità con il controllo degli accessi a livello di campo basato su regole (es.: ruoli utente, capacità , intervallo di IP). | Limita i dati in base al parametro context (es.: view per gli utenti non autenticati, edit per gli utenti autenticati con i permessi). |
| Operazioni in blocco | Supporta la Multiple Query Execution, in cui un singolo documento GraphQL può eseguire più operazioni che possono condividere uno stato tramite la direttiva @export, migliorando le batch request. | Consente le batch request, in cui più richieste vengono soddisfatte internamente all'interno di un'unica richiesta HTTP. |
| Gestione del sito | Può recuperare i dati, modificarli e archiviarli nuovamente all'interno di un singolo documento GraphQL tramite interfacce utente, consentendo l'automazione e la gestione dei siti WordPress. Può svolgere i compiti di più plugin come duplicare, automatizzare, eseguire backup, cercare/sostituire, webhook e tradurre. È un'API e molto di più. | Principalmente un'API per accedere e manipolare i dati di WordPress. |
| Generalità | Uno strumento generico per gestire i siti WordPress, in grado di mutare i dati e di integrarsi con servizi di terze parti tramite query GraphQL. | Incentrato sulla fornitura di un'API; richiede plugin aggiuntivi o codice personalizzato per ottenere funzionalità simili. |
Riepilogo dei punti chiave:
- Recupero dei dati: Gato GraphQL usa query su misura, mentre la WP REST API usa più richieste verso endpoint.
- Endpoint: Gato GraphQL usa persisted queries create tramite UI, mentre la WP REST API usa endpoint REST codificati in PHP.
- Controllo degli accessi: Gato GraphQL offre il controllo a livello di campo, mentre la WP REST API usa il parametro context.
- Operazioni in blocco: Gato GraphQL usa la Multiple Query Execution, mentre la WP REST API usa le batch request.
- Gestione del sito: Gato GraphQL è uno strumento completo, mentre la WP REST API è principalmente un'API.
Accesso ai dati predefiniti
Con la WP REST API, esponi i dati tramite endpoint REST. Ogni endpoint ha il proprio URL e i suoi dati sono predefiniti (per le risorse corrispondenti, come i post o gli utenti).
In modo simile agli endpoint REST, Gato GraphQL supporta le Persisted Queries, che sono anch'esse endpoint con dati predefiniti. Richiedere una persisted query tramite GET eseguirà la query GraphQL memorizzata e produrrà la risposta JSON attesa:

La differenza tra loro è che, mentre gli endpoint della REST API vengono creati tramite codice PHP e devono essere distribuiti all'interno di un tema o di un plugin, le persisted queries di Gato GraphQL vengono create usando il linguaggio GraphQL e vengono pubblicate tramite un'interfaccia utente (basata sull'editor di WordPress) all'interno della wp-admin, senza la necessità di distribuire alcun codice.

Gli stessi meccanismi di cache possono essere applicati agli endpoint REST e alle persisted queries GraphQL. Poiché la persisted query è accessibile dal proprio endpoint, la sua risposta può essere messa in cache usando il caching HTTP standard (PRO).
Controllo degli accessi
La limitazione dei dati nella WP REST API dipende dal parametro context. Passare ?context=view produce dati per gli utenti non autenticati, mentre ?context=edit include dati aggiuntivi per gli utenti autenticati (con i permessi corretti), come il campo content.raw del post.
Gato GraphQL offre molta più flessibilità , dato che ogni singolo campo può essere accessibile o meno in base alle regole di Controllo degli accessi. Puoi verificare che solo gli utenti connessi, o gli utenti con un determinato ruolo o capacità , o i visitatori provenienti da un determinato intervallo di IP, possano accedere a un campo specifico (PRO).

Operazioni in blocco
La WP REST API consente di eseguire batch request, in cui più richieste vengono soddisfatte internamente all'interno di un'unica richiesta HTTP.
Gato GraphQL fornisce la Multiple Query Execution, in cui un singolo documento GraphQL può eseguire più operazioni.
La Multiple Query Execution è un miglioramento rispetto alle batch request, poiché le operazioni possono condividere uno stato tra loro tramite la direttiva @export.
Ad esempio, per duplicare un post, abbiamo un'operazione query che recupera i dati del post e passa questi dati a un'operazione mutation che crea un nuovo post con essi:
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
}
}Gestione del sito WordPress
Gato GraphQL ci permette di recuperare i dati dal database, modificarli secondo necessità e archiviarli nuovamente, il tutto all'interno di un singolo documento GraphQL.
Questo si ottiene tramite interfacce utente, per comporre e pubblicare le query GraphQL, configurare gli endpoint secondo necessità e automatizzare l'esecuzione di una query quando si verifica un evento.
Tutto ciò significa che Gato GraphQL è uno strumento generico per gestire i nostri siti WordPress, soddisfacendo i casi d'uso in cui i dati (provenienti dal sito WordPress o forniti da servizi di terze parti) devono essere mutati, poiché ciò può essere realizzato eseguendo una query GraphQL.
Nota come Gato GraphQL possa offrire le funzionalità di più plugin:
- Non è un plugin di duplicazione, eppure puoi duplicare i post con esso.
- Non è un plugin di automazione, ma puoi automatizzare i tuoi compiti, senza alcuna restrizione.
- Non è un plugin di backup, ma puoi importare ed esportare i post.
- Non è un plugin di ricerca e sostituzione, ma puoi modificare i tuoi post in blocco.
- Non è un plugin di webhook né un client HTTP, ma puoi sia inviare una richiesta a qualsiasi API, sia ricevere ed elaborare richieste in arrivo da qualsiasi servizio.
- Non è un plugin di traduzione, ma puoi tradurre qualsiasi contenuto.
La WP REST API è solo questo, un'API.
Gato GraphQL è anche un'API, ma molto di più.
