はじめに
はじめにWP REST APIをGato GraphQLに置き換える

WP REST APIをGato GraphQLに置き換える

アプリケーションがWP REST APIを使用している場合、代わりにGato GraphQLを使用することができます。

Persisted Queries拡張機能を使用すると、GraphQLを使って構成されたREST風のエンドポイントを公開できます。

アプリケーション内の各RESTエンドポイントに対して、同じデータを取得する対応するパーシステッドクエリエンドポイントを作成し、そのエンドポイントを代わりに使用できます。

例えば、次のGraphQLクエリはRESTエンドポイント/wp-json/wp/v2/posts/を置き換えることができます:

{
  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
  }
}

APIの階層のおかげで、パーシステッドクエリは/graphql-query/wp/v2/posts/というパスの下に公開され、エンドポイントのマッピングが容易になります。

RESTエンドポイント/wp-json/wp/v2/posts/{id}/(指定されたIDの投稿データを取得するもの)を再現するには、URLパラメータpostIdの下に投稿IDを指定します。

例えば、次のパーシステッドクエリはエンドポイント/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
  }
}