入门
入门GraphQL 与 Gato GraphQL 简介

GraphQL 与 Gato GraphQL 简介

欢迎来到 Gato GraphQL 指南。您将在这里找到有关在 WordPress 站点上安装、配置和使用 Gato GraphQL 插件的丰富信息。

什么是 GraphQL

GraphQL 是一种 API 规范,它使客户端(例如浏览器中的网站或移动应用)能够精确指定所需的数据,实现该 API 的服务器将精确返回相应内容。

GraphQL 的 query 示例如下:

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

服务器的响应为 JSON 格式,其数据结构与 query 相同。示例如下:

{
  "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 服务器还可以对数据执行"mutation"(即创建和更新)操作。此时,操作关键字 query 必须替换为 mutation

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

请访问 GraphQL 官方网站 graphql.org

什么是 Gato GraphQL

Gato GraphQL 是一款 WordPress 插件,它将站点转换为 GraphQL 服务器,使您能够使用 GraphQL 语言获取和修改 WordPress 站点的数据。

Gato GraphQL 致力于做到以下几点:

易于使用

WordPress 的理念是:无论是否具备技术能力,任何人都应能够使用该软件。本插件致力于践行这一理念,尽可能简化 API 的创建与交互过程。

举例来说,Gato GraphQL 允许通过 WordPress 编辑器提供的用户界面发布持久化 query(persisted queries,即公开预定义数据的端点,类似于 REST 端点);与撰写文章类似,每个人都可以轻松使用。

高性能

解析一个 GraphQL query 通常需要遍历包含所有被 query 实体数据的图结构。图中的节点越多、深度越大,该过程所需的时间就越长(甚至呈指数级增长)。

Gato GraphQL 采用了不同的方案:使用组件模型结构(而非图结构)来解析 GraphQL query,该过程随 query 深度线性增长(而非指数级增长)。

此外,只有 GraphQL query 中请求的 schema 元素才会被编译、验证和执行,而非整个 GraphQL schema。因此,无论您的 WordPress 站点安装了 3 个还是 30 个自定义文章类型(Custom Post Types),query 的解析时间都相同。

功能强大

API 是客户端与服务器交互的主要网关;API 在任何方面都不应受到限制,以便能够满足各种需求,这一点至关重要。

本插件可通过自定义功能、外部 API 和云服务来修改 query 执行的结果。被 query 的数据可按需迭代和处理,query 的输出同样可以按任意期望的方式进行调整,因此几乎没有什么是无法实现的。

安全可靠

GraphQL API 若管理不当,可能会向所有人(包括恶意行为者)暴露 WordPress 站点中的所有数据;GraphQL 服务器需要提供适当的安全措施,以确保只有目标用户才能访问数据。

本插件非常重视安全性,并原生实现了多项安全措施:可禁用单一端点;可通过持久化 query 公开数据;通过可配置的访问控制列表(基于用户的登录状态、特定角色或权限,或自定义规则)授予数据访问权限;还可将 API 定义为公开或私有。

面向未来

GraphQL 是一个持续演进的标准,社区不断提出新功能建议,计划在未来某个时间纳入规范。

本插件无需等待:它已将许多已提议的新功能(如 schema 命名空间、多 query 执行等)作为可选功能内置其中,管理员需明确启用方可使用。