Aan de slag
Aan de slagDe WP REST API vervangen

De WP REST API vervangen

Als je applicatie de WP REST API gebruikt, is het mogelijk om in plaats daarvan Gato GraphQL te gebruiken.

Met de extensie Persisted Queries kun je REST-achtige endpoints publiceren, samengesteld met GraphQL.

Voor elk van de REST-endpoints in je applicatie kun je een bijbehorend persisted query-endpoint aanmaken dat dezelfde gegevens ophaalt, en dat endpoint in plaats daarvan gebruiken.

Zo kan de volgende GraphQL-query het REST-endpoint /wp-json/wp/v2/posts/ vervangen:

{
  posts {
    id
    date: dateStr(format: "Y-m-d\\TH:i:s")
    modified: modifiedDateStr(format: "Y-m-d\\TH:i:s")
    slug
    status
    link: url
    title: self {
      rendered: title
    }
    content: self {
      rendered: content
    },
    excerpt: self {
      rendered: excerpt
    }
    author
    featured_media: featuredImage
    sticky: isSticky
    categories
    tags
  }
}

Dankzij de API-hiërarchie kan de persisted query worden gepubliceerd onder het pad /graphql-query/wp/v2/posts/, waardoor het eenvoudig is om endpoints te koppelen.

Om het REST-endpoint /wp-json/wp/v2/posts/{id}/ na te bootsen, dat gegevens ophaalt voor de post met een bepaald ID, kunnen we het post-ID meegeven via de URL-parameter postId.

Zo kan de volgende persisted query worden aangeroepen via het endpoint /graphql-query/wp/v2/posts/single/?postId={id}:

query GetPost($postId: ID!) {
  post(by: { id: $postId }) {
    id
    date: dateStr(format: "Y-m-d\\TH:i:s")
    modified: modifiedDateStr(format: "Y-m-d\\TH:i:s")
    slug
    status
    link: url
    title: self {
      rendered: title
    }
    content: self {
      rendered: content
    },
    excerpt: self {
      rendered: excerpt
    }
    author
    featured_media: featuredImage
    sticky: isSticky
    categories
    tags
  }
}