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 执行等)作为可选功能内置其中,管理员需明确启用方可使用。