API参考:内联跟踪插件
使用插件
📣 新功能: Apollo Server 4中的默认情况下不包括错误详情。更多信息,请参阅错误处理。
本文档介绍了ApolloServerPluginInlineTrace
插件的可选项,您可以从中导入@apollo/server/plugin/inlineTrace
。
该插件允许您的 GraphQL服务器 在响应中包含编码的性能和使用跟踪。这主要是为了与Apollo联邦一起使用。子图 使用此插件,并且当Apollo网关请求时,将跟踪包含在ftv1
GraphQL 响应扩展中。网关通过传递HTTP头apollo-federation-include-trace: ftv1
来请求此跟踪。
Apollo Server默认将此插件安装在与所有联邦子图中,并使用默认配置——隐藏错误
和扩展
(详细信息请见选项)。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上运行此插件,并在网关上运行使用情况报告插件;这就是默认行为的工作方式。如果您在网关中包含此插件,那么网关将在其响应中包含包括查询计划和所有子图跟踪,并在其中内联。这不建议用于公开的服务器,但在本地开发时,如果您想查看网关生成的确切查询计划,这可能很有帮助。
选项
名称 类型 | 描述 |
---|---|
| 向此对象提供以在您的服务器向 Apollo Studio 报告错误之前修改GraphQL操作错误。有效的选项在有效的 默认值是 |
有效的 includeErrors
对象签名
对象 | 描述 |
---|---|
| 如果您提供此对象,错误消息将被屏蔽,extensions将被省略在发送到 Apollo Studio 的跟踪中。这是默认行为。 |
| 如果您提供此对象,所有错误消息和extensions都将包含在跟踪中 |
|
您可以修改报告错误的唯一属性是它的 |