API 参考:Schema 报告插件
注意:Schema 报告插件不支持使用 Apollo Federation 的图。 如果你使用联邦,或者如果你想在 CI/CD 工作流中发布你的单体模式,你可以使用 Rover CLI 来发布你的模式或子图变更。
使用插件
本文档介绍了ApolloServerPluginSchemaReporting
插件的选项,你可以从 @apollo/server/plugin/schemaReporting
导入。
这个插件使你的 GraphQL 服务器 能够在每次启动时将其最新模式注册到 Apollo 模式注册表中。有关模式报告的详细信息,请参阅 Apollo Studio 文档。
为了使用此插件,你必须使用 图 API 密钥 配置你的服务器,可以通过 APOLLO_KEY
环境变量来实现,或者直接传递给您的 ApolloServer
构造函数(例如,new ApolloServer({apollo: {key: KEY}})
)。这是与配置使用报告相同的方式。
你必须明确启用模式报告。如果您想使用默认配置来打开模式报告,可以将APOLLO_SCHEMA_REPORTING
环境变量设置为true
。
如果您想配置模式报告(或者更愿意通过代码而非使用环境变量来设置配置),导入ApolloServerPluginSchemaReporting
插件并将其传递给ApolloServer
构造函数:
import { ApolloServer } from '@apollo/server';import { ApolloServerPluginSchemaReporting } from '@apollo/server/plugin/schemaReporting';const server = new ApolloServer({typeDefs,resolvers,plugins: [ApolloServerPluginSchemaReporting()],});
import { ApolloServer } from '@apollo/server';import { ApolloServerPluginSchemaReporting } from '@apollo/server/plugin/schemaReporting';const server = new ApolloServer({typeDefs,resolvers,plugins: [ApolloServerPluginSchemaReporting()],});
使用插件与多个部署实例一起使用
单个实例运行插件 Apollo Server报告当前模式哈希到GraphOS的必要性。该哈希是模式版本的标识符,不包含任何使用数据。GraphOS仅当所有Apollo Server实例(一个或多个)报告相同的模式哈希时,才在变更日志中反映新的模式版本。
选项
名称 / 类型 | 描述 |
---|---|
| 模式报告器在开始报告之前等待。默认情况下,报告在0到10秒之间等待一些随机的时长。更长时间间隔会导致启动更加分散,这意味着多个服务器不太可能需要上传相同的模式。 如果此服务器在lambda或其他受限环境中运行,则减小模式报告最大等待时间以低于默认值将很有用。 这个数字将是模式报告器在开始报告之前等待的毫秒数的范围的最大值。 |
| 覆盖报告给Apollo注册表的已报告模式。这个模式不会经过任何规范化,并将字符串直接发送到Apollo注册表。这可以用于注释或其他在生成 如果您将此选项传递给此插件,应明确配置
|
| 报告模式的URL。主要用于测试和内部Apollo使用。 |
| 指定在报告模式时使用的Fetch API函数实现。 |
禁用插件
仅当APOLLO_SCHEMA_REPORTING
设置为true
时,才会自动安装模式报告插件,因此禁用此插件的最简单方法是避免设置该环境变量(不要显式安装ApolloServerPluginSchemaReporting
)。但是,如果您想确保 schema reporting 插件未安装在您的服务器上(也许是为了可能在设置环境变量任意的测试中运行的测试),您可以安装ApolloServerPluginSchemaReportingDisabled
插件来禁用 schema reporting,如下所示:
import { ApolloServer } from '@apollo/server';import { ApolloServerPluginSchemaReportingDisabled } from '@apollo/server/plugin/disabled';const server = new ApolloServer({typeDefs,resolvers,plugins: [ApolloServerPluginSchemaReportingDisabled()],});
import { ApolloServer } from '@apollo/server';import { ApolloServerPluginSchemaReportingDisabled } from '@apollo/server/plugin/disabled';const server = new ApolloServer({typeDefs,resolvers,plugins: [ApolloServerPluginSchemaReportingDisabled()],});