功能简介
GraphQL 端点提供 Query 与 Mutation,覆盖账号、数据、存储、函数、消息等主要服务,但不承诺与 REST 全量同构。GraphQL Subscription 未实现;实时事件必须使用 Realtime WebSocket。
当前支持范围
- GraphQL(SUPPORTED):提供 GraphQL Query 与 Mutation,覆盖账号、数据、存储、函数和消息等主要服务;不宣称与 REST 全量同构。
适用场景
- 一次请求组合多个已支持字段。
- 使用类型化 Query/Mutation 访问主要服务。
- 在 REST 与 GraphQL 之间按能力覆盖选择接口。
前置条件
- Project 已启用 GraphQL API。
- 查询字段存在于当前服务端 Schema。
- 请求身份拥有底层 Resolver 所需 Scope/Permission。
Console 操作路径
Console 不提供统一 GraphQL Subscription 页面。GraphQL 调用通过 SDK 或 /v1/graphql;实时事件转到 Realtime。
SDK 示例
SDK · TypeScript
import { Client } from 'appbase-web-sdk';
const client = new Client()
.setEndpoint('https://<APPBASE_HOST>/v1')
.setProject('<PROJECT_ID>');
import { Graphql } from 'appbase-web-sdk';
const graphql = new Graphql(client);
const result = await graphql.query({
query: {
query: `query {
accountGet { _id name email }
}`
}
});REST 示例
REST · Bash
curl 'https://<APPBASE_HOST>/v1/graphql' \
-X POST \
-H 'X-Appwrite-Project: <PROJECT_ID>' \
-H 'X-Appwrite-JWT: <USER_JWT>' \
-H 'Content-Type: application/json' \
--data '{"query":"query { accountGet { _id name email } }"}'常见错误
| 现象 | 处理建议 |
|---|---|
| GraphQL validation error | 核对当前服务端 Schema、字段名和变量类型。 |
| 字段返回 access forbidden | 检查该字段背后的 Scope 与资源 Permission。 |
| 找不到 Subscription operation | 这是明确不支持项;改用 Realtime SDK。 |
| 请求过大或复杂度受限 | 拆分 Query,并遵循实例限流和请求大小限制。 |
当前限制
- 不与 REST 全量同构。
- 不支持 GraphQL Subscription。
- AppBase 新增能力是否进入 GraphQL 必须逐字段核验,不能从 REST 路由推断。
Appwrite 兼容说明
Query/Mutation 接入方式保持兼容;能力范围以 AppBase GraphQL Schema 与测试为准。
AppBase 增强说明
AppBase 继续保留 GraphQL 入口,但新增能力优先以已核验 REST/SDK 页面为准并明确覆盖差异。
发布状态和验证 Commit
origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353。
权威来源文件列表
backend-candidate:app/controllers/api/graphql.phpbackend-candidate:docs/references/graphql/backend-candidate:src/Appwrite/GraphQL/backend-candidate:tests/e2e/Services/GraphQL/
Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/apis/graphql。上游页面不是 AppBase 实现证据。