多层级错误格式化:给每个错误赋予结构化代码与用户消息
本教程教你如何设计统一的 GraphQL 错误结构,支持多层嵌套、国际化消息、以及依据错误类型设置不同的 HTTP 状态码。 · 难度:入门 · +10XP
多层级错误格式化:给每个错误赋予结构化代码与用户消息
GraphQL 错误默认只返回 message,但生产环境需要更丰富的信息:错误码、字段路径、用户可见消息、开发调试堆栈等。本课程将展示如何使用 graphql 库中的 formatError 函数,配合 Apollo Server 的 plugins,构建一个可扩展的错误体系。你将学会自动将 ValidationError、AuthenticationError 等自定义错误转换为标准格式,同时不泄露敏感信息。
function formatError(err) {
if (err.originalError && err.originalError.code) {
return {
code: err.originalError.code,
message: err.message,
path: err.path,
userMessage: err.originalError.userMessage || 'An error occurred'
};
}
// 默认隐藏内部细节
return { code: 'INTERNAL_ERROR', message: 'Internal server error' };
}