入门
入门用 Gato GraphQL 替换 WP REST API

用 Gato GraphQL 替换 WP REST API

如果您的应用程序正在使用 WP REST API,可以改用 Gato GraphQL。

借助 Persisted Queries 扩展,您可以发布使用 GraphQL 构建的类 REST 端点。

对于应用程序中的每个 REST 端点,您可以创建一个对应的 persisted query 端点来获取相同的数据,然后改用该端点。

例如,以下 GraphQL query 可以替换 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 层级结构,persisted query 可以发布在路径 /graphql-query/wp/v2/posts/ 下,从而便于映射端点。

要复现 REST 端点 /wp-json/wp/v2/posts/{id}/(获取指定 ID 的文章数据),可以通过 URL 参数 postId 传入文章 ID。

例如,以下 persisted query 可在端点 /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
  }
}