加入我们,于10月8日至10日在纽约市学习有关GraphQL联盟和API平台工程的最新技巧、趋势和新闻。加入我们,参与2024年纽约市GraphQL峰会
文档
免费开始

API参考:内联跟踪插件


使用插件

📣 新功能: Apollo Server 4中的默认情况下不包括错误详情。更多信息,请参阅错误处理

本文档介绍了ApolloServerPluginInlineTrace 插件的可选项,您可以从中导入@apollo/server/plugin/inlineTrace

该插件允许您的 在响应中包含编码的性能和使用跟踪。这主要是为了与Apollo联邦一起使用。 使用此插件,并且当Apollo网关请求时,将跟踪包含在ftv1 响应扩展中。网关通过传递HTTP头apollo-federation-include-trace: ftv1 来请求此跟踪。

默认将此插件安装在与所有联邦子图中,并使用默认配置——隐藏错误扩展(详细信息请见选项)。Apollo Server会检查它所提供的服务器模式是否包含一个 _Service.sdl: String!(以及Federation v1的先前可空版本:_Service.sdl: String),以确定它是否是联邦。通常您不必自己安装此插件;只有在您想要提供非默认配置时才需要。

如果您想配置ApolloServerPluginInlineTrace插件,请导入它并将其传递给ApolloServer构造函数的plugins数组:

import { ApolloServer } from '@apollo/server';
import { ApolloServerPluginInlineTrace } from '@apollo/server/plugin/inlineTrace';
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [
ApolloServerPluginInlineTrace({
includeErrors: { transform: (err) => (err.message.match(SENSITIVE_REGEX) ? null : err) },
}),
],
});
import { ApolloServer } from '@apollo/server';
import { ApolloServerPluginInlineTrace } from '@apollo/server/plugin/inlineTrace';
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [
ApolloServerPluginInlineTrace({
includeErrors: { transform: (err) => (err.message.match(SENSITIVE_REGEX) ? null : err) },
}),
],
});

即使您的模式定义了_Service.sdl: String!,但您不想使用内联跟踪插件,您也可以使用ApolloServerPluginInlineTraceDisabled插件显式禁用它:

import { ApolloServer } from '@apollo/server';
import { ApolloServerPluginInlineTraceDisabled } from '@apollo/server/plugin/disabled';
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [ApolloServerPluginInlineTraceDisabled()],
});
import { ApolloServer } from '@apollo/server';
import { ApolloServerPluginInlineTraceDisabled } from '@apollo/server/plugin/disabled';
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [ApolloServerPluginInlineTraceDisabled()],
});

请注意,当此插件安装在您的应用程序中时,任何客户端都可以请求对它们运行的任何进行跟踪,这可能会暴露关于您的服务器您认为是敏感的信息(例如,每个单个字段的执行时间)。联邦子图通常不应该直接暴露在公互联网上。

在使用联邦时,您通常在subgraphs上运行此插件,并在网关上运行使用情况报告插件;这就是默认行为的工作方式。如果您在网关中包含此插件,那么网关将在其响应中包含包括和所有子图跟踪,并在其中内联。这不建议用于公开的服务器,但在本地开发时,如果您想查看网关生成的确切查询计划,这可能很有帮助。

选项

名称
类型
描述
includeErrors

对象

向此对象提供以在您的服务器向 Apollo Studio 报告错误之前修改GraphQL操作错误。有效的选项在有效的 includeErrors 对象签名中描述。

默认值是 { masked: true },这意味着错误消息被屏蔽,被省略。这是一个安全措施,以防止敏感数据可能被发送到

有效的 includeErrors 对象签名

对象描述
{ masked: true }

如果您提供此对象,错误消息将被屏蔽,extensions将被省略在发送到 Apollo Studio 的跟踪中。这是默认行为。

{ unmodified: true }

如果您提供此对象,所有错误消息和extensions都将包含在跟踪中

{ transform: (err: GraphQLError) => GraphQLError | null }

transform的值是一个函数,它会接收每个错误(GraphQLError),并且也必须返回一个GraphQLError对象(或null以防止Apollo Server报告特定的错误)。

您可以修改报告错误的唯一属性是它的message及其extensions。有关详细信息,请参阅屏蔽和记录错误

上一页
模式报告
下一页
HTTP 服务器排空
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,以Apollo GraphQL名义。

隐私政策

公司