Aan de slag
Aan de slagInleiding tot GraphQL en Gato GraphQL

Inleiding tot GraphQL en Gato GraphQL

Welkom bij de Gato GraphQL-gidsen. Hier vind je uitgebreide informatie over het installeren, configureren en gebruiken van de Gato GraphQL-plugin op je WordPress-site.

Wat is GraphQL

GraphQL is een API-specificatie waarmee clients (zoals de website in de browser, of een mobiele app) precies kunnen aangeven welke data ze nodig hebben, en de server die de API implementeert haalt precies die data op.

Een GraphQL query ziet er zo uit:

query {
  posts {
    id
    title
    content
    author {
      id
      name
    }
  }
}

Het antwoord van de server is in JSON-formaat en bevat de data in dezelfde structuur als de query. Het ziet er zo uit:

{
  "data": {
    "posts": [
      {
        "id": 1,
        "title": "Hello world",
        "content": "<p>How are you doing?</p>",
        "author": {
          "id": 1,
          "name": "Leo"
        }
      },
      {
        "id": 2,
        "title": "Scheduled post",
        "content": "<p>This post is scheduled to be published in the future.</p>",
        "author": {
          "id": 2,
          "name": "Markus"
        }
      },
      {
        "id": 3,
        "title": "Lorem ipsum",
        "content": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>",
        "author": {
          "id": 3,
          "name": "Socrates"
        }
      }
    ]
  }
}

GraphQL-servers kunnen ook data "muteren" (d.w.z. aanmaken en bijwerken). In dat geval moet het bewerkingssleutelwoord query worden vervangen door mutation:

mutation {
  createPost(input: {
    title: "New post",
    contentAs: { html: "Lorem ipsum dolor sit amet" }
  }) {
    id
    status
  }
}

Bekijk de officiƫle GraphQL-site op graphql.org.

Wat is Gato GraphQL

Gato GraphQL is een plugin voor WordPress die de site omzet in een GraphQL-server, waarmee je data van de WordPress-site kunt ophalen en aanpassen met behulp van de GraphQL-taal.

Gato GraphQL streeft ernaar om:

Eenvoudig te gebruiken

De WordPress-filosofie is dat iedereen, ongeacht technische vaardigheden, de software moet kunnen gebruiken. De plugin probeert aan deze filosofie te voldoen door het zo eenvoudig mogelijk te maken om een API aan te maken en ermee te werken.

Als voorbeeld maakt Gato GraphQL het mogelijk om persisted queries te publiceren (dit zijn endpoints die vooraf gedefinieerde data beschikbaar stellen, vergelijkbaar met REST-endpoints) via de gebruikersinterface van de WordPress-editor; net als het schrijven van een bericht is het voor iedereen toegankelijk.

Snel

Het oplossen van een GraphQL query vereist normaal gesproken het doorlopen van een graaf met de data van alle opgevraagde entiteiten. Hoe meer knooppunten in de graaf en hoe dieper de graaf, hoe langzamer dit proces verloopt (zelfs exponentieel langzamer).

Gato GraphQL hanteert een andere aanpak: het gebruikt een componentmodelstructuur om de GraphQL query op te lossen (in plaats van een graaf), waarbij het proces lineair groeit met de diepte van de query (niet exponentieel).

Bovendien worden alleen de schema-elementen die worden opgevraagd in de GraphQL query gecompileerd, gevalideerd en uitgevoerd, en niet het hele GraphQL-schema. Als gevolg daarvan is de oplostijd voor de query hetzelfde, ongeacht of je WordPress-site 3 of 30 Custom Post Types heeft geĆÆnstalleerd.

Krachtig

API's fungeren als de belangrijkste toegangspoort voor de interactie tussen client en server; het is belangrijk dat een API op geen enkel vlak beperkt is, zodat aan elke vereiste kan worden voldaan.

Deze plugin maakt het mogelijk om de resultaten van het uitvoeren van een query aan te passen via aangepaste functionaliteit, externe API's en cloudgebaseerde diensten. De opgevraagde data kan naar wens worden doorlopen en bewerkt, en de uitvoer van de query kan eveneens op elke gewenste manier worden aangepast, zodat er vrijwel niets is dat niet mogelijk is.

Veilig

Een GraphQL API kan gemakkelijk slecht worden beheerd, waardoor iedereen — inclusief kwaadwillenden — toegang krijgt tot alle data op de WordPress-site; de GraphQL-server moet passende beveiligingsmaatregelen bieden om ervoor te zorgen dat alleen de beoogde gebruikers toegang hebben tot de data.

Deze plugin neemt beveiliging zeer serieus en heeft van nature verschillende beveiligingsmaatregelen geïmplementeerd. Het enkele endpoint kan worden uitgeschakeld; data kan beschikbaar worden gesteld via persisted queries; toegang tot data verlenen gebeurt via configureerbare toegangsbeheerlijsten (op basis van of de gebruiker is ingelogd of niet, een bepaalde rol of bevoegdheid heeft, of een aangepaste regel); en de API kan worden gedefinieerd als openbaar of privé.

Toekomstgericht

GraphQL is een standaard die blijft evolueren, en de community blijft ideeƫn aandragen voor nieuwe functionaliteiten die in de toekomst aan de specificatie worden toegevoegd.

Deze plugin houdt niet van wachten; hij bevat al veel van de nieuwe functionaliteiten die zijn voorgesteld (zoals schema-naamruimtes, het uitvoeren van meerdere queries en andere) als opt-in-functies, zodat ze expliciet door de beheerder moeten worden ingeschakeld.