@apollo/persisted-query-lists
此套件包含与阿波罗图形QL 持续合作的公用设备 查询。 具体来说,这个软件包包含一个 阿波罗链接 可用于核实您对清单的持续询问以及 帮助工作 错误的查询链接。 。 。 .
这些职能对应于通过持续询问的不同步骤:
createPersistedQueryManifestVerificationLink允许您验证您的配置是否正确@apollo/generate-persisted-query-manifest工具,而不改变应用程序与您的 GraphQL 服务器的通信方式,也不要求您在 GraphOS/ Router 中设置持续查询。 这可以帮助您构建一个部署工作流程,创建(并选择发布)您的运算表.- 一旦你确信你的清单 是由你的部署基础设施 生成和公布的, 你可以使用
generatePersistedQueryIdsAtRuntime告诉您的应用程序在 GraphQL 请求中而不是在 GraphQL 文档中发送持续查询ID。 虽然您确实需要生成并发布您的到GraphOS的出品单才能正常工作,但如果您使用此机制,您不需要在运行时向客户端提供出品单,所以设置起来可以比generatePersistedQueryIdsFromManifest然而,这需要您的应用程序在运行时计算出SHA256散列. - 终于,你可以用
generatePersistedQueryIdsFromManifest告诉您的应用程序发送持续查询 ID, 包括直接在您的应用程序中显示。 它使用您的 GraphQL 操作的名称来选择要发送的坚持查询 ID 。 这能比generatePersistedQueryIdsAtRuntime不要求客户端计算散列.
设置
安装软件包 :
npm install @apollo/persisted-query-lists
使用量
generatePersistedQueryIdsAtRuntime
帮助函数传递到 错误的查询链接
在运行时生成查询散列,而不使用显示文件。 这个
与 Persisted 查询链接的默认行为不同
自动登记持续存在的询问并排序顶级定义
模仿显示文件的行为。 见 generatePersistedQueryIdsFromManifest
如果您能够将显示的文件生成集成到您的应用程序的构建过程中.
import { generatePersistedQueryIdsAtRuntime } from "@apollo/persisted-query-lists";
import { createPersistedQueryLink } from "@apollo/client/link/persisted-queries";
import { sha256 } from "crypto-hash";
const persistedQueryLink = createPersistedQueryLink(
generatePersistedQueryIdsAtRuntime({ sha256 }),
);
如果您使用 createOperationId 配置选项到 @apollo/generate-persisted-query-manifest。 。 。 .
选项
sha256: SHA-256散列函数. 可以同步或同步 。 提供SHA-256 需要散列函数.
generatePersistedQueryIdsFromManifest
帮助函数传递到 错误的查询链接
这将读取您显示的配置, 以获取持续的查询ID .
注意此函数完全忽略 body 在清单中 它只是寻找一个行动 name 匹配您代码试图执行的操作,并使用它 id。 。 。 .
见 @apollo/generate-persisted-query-manifest
以学习如何生成显示文件.
import { generatePersistedQueryIdsFromManifest } from "@apollo/persisted-query-lists";
import { createPersistedQueryLink } from "@apollo/client/link/persisted-queries";
const persistedQueryLink = createPersistedQueryLink(
generatePersistedQueryIdsFromManifest({
loadManifest: () => import("./path/to/persisted-query-manifest.json"),
}),
);
选项
loadManifest: 返回您持续查询表的函数 配置 。 可以是同步或同步. 我们建议使用动态导入到 避免将显示的配置与您的生产建设相捆绑.
createPersistedQueryManifestVerificationLink
一个 阿波罗链接
验证发送到您的服务器的查询可以匹配您的清单
配置 。 见 @apollo/generate-persisted-query-manifest
以学习如何生成显示文件.
注: 此链接不是一个终止链接,并将通过 链接链.
import { createPersistedQueryManifestVerificationLink } from "@apollo/persisted-query-lists";
const verificationLink = createPersistedQueryManifestVerificationLink({
loadManifest: () => import("./path/to/persisted-query-manifest.json"),
onVerificationFailed: (details) => {
console.warn(details.reason);
},
});
选项
-
loadManifest: 返回您持续查询表的函数 配置 。 可以通过同步或同步。 我们建议使用动态导入到 避免将显示的配置与您的生产建设相捆绑. -
onVerificationFailed: 核查时称为函数 运行失败即将发送到服务器 。 每一个错误 发生时将有一个reason描述失败的属性。 见 关于各种核查失败的详细情况,见下文.
核查失败
核查失败将包含 reason 属性
失败 。 此外,每次失败都包含一个 operation
属性,用于触发验证失败的操作.
以下失败可能发生如下: reason 属性 :
-
AnonymousOperation: 当 GraphQL 操作不包含时失败 操作名称。 错误的查询不支持匿名操作. -
MultipleOperations: 当 GraphQL 文档包含多个时失败 操作。 错误的查询不支持单个的多个操作 文档. -
NoOperations: 当 GraphQL 文档不包含操作时失败, 例如碎片定义。 错误的查询不支持 GraphQL 没有操作的文档. -
UnknownOperation: 无法匹配 GraphQL 文档时失败 在显示配置中操作。 这是你可能需要的指标 重新生成您的表单配置. -
OperationMismatch: 当您在清单中找到操作失败 配置, 匹配操作名称, 但操作机构没有 匹配显示的配置正文。 此错误还提供了manifestOperation属性是匹配的运算符 配置 。 这份清单可能含有过时的 询问,您可能需要重新生成您的表单配置 .