拦截和自定义 Apollo GraphQL 错误
Intercept and customise Apollo GraphQL Errors
我正在使用基于 ApolloError(或派生的)的简单错误处理机制从我的 GraphQL 服务器中抛出错误。例如:
throw new AuthenticationError("Token not present in the request");
在这种情况下,客户会收到如下信息:
{
"errors": [
{
"message": "Token not present in the request",
...
我想在将响应返回给客户端之前以某种方式拦截这些错误,以便将它们翻译成用户选择的语言。
我该怎么做?
寻找 here 您可以为 ApolloServer 构造函数提供 formatError
方法。
const server = new ApolloServer({
typeDefs,
resolvers,
formatError: (err) => {
if (err.message.includes("xyz")) {
return new Error('Internal server error');
}
return err;
},
});
Use err.originalError
to do type checking
formatError: (err) => {
if (err.originalError instanceof AuthenticationError) {
return new Error('Internal server error');
}
return err;
},
我正在使用基于 ApolloError(或派生的)的简单错误处理机制从我的 GraphQL 服务器中抛出错误。例如:
throw new AuthenticationError("Token not present in the request");
在这种情况下,客户会收到如下信息:
{
"errors": [
{
"message": "Token not present in the request",
...
我想在将响应返回给客户端之前以某种方式拦截这些错误,以便将它们翻译成用户选择的语言。
我该怎么做?
寻找 here 您可以为 ApolloServer 构造函数提供 formatError
方法。
const server = new ApolloServer({
typeDefs,
resolvers,
formatError: (err) => {
if (err.message.includes("xyz")) {
return new Error('Internal server error');
}
return err;
},
});
Use
err.originalError
to do type checking
formatError: (err) => {
if (err.originalError instanceof AuthenticationError) {
return new Error('Internal server error');
}
return err;
},