对 GraphQL 错误处理和日志记录的最佳实践

· 约 5 分钟读完

GraphQL 是一种查询语言和运行时环境,可以使应用的数据获取更加灵活和高效。尽管在使用 GraphQL 进行查询和数据操作时可以减少很多错误发生的可能,但仍然有些情况下会出现错误,包括网络请求错误、GraphQL 服务器内部错误以及应用逻辑错误等。

在任何情况下,一维护良好的 GraphQL 服务器必须具备优秀的错误处理和日志记录机制。本篇文章将介绍 GraphQL 错误处理和日志记录的最佳实践,帮助读者写出更加健壮、可维护的 GraphQL 服务器。

理解 GraphQL 的错误类型

首先,需要理解 GraphQL 可能出现的错误类型。GraphQL 查询中可能出现以下四种错误:

  1. 语法错误:查询语句格式错误。
  2. 验证错误:查询验证器返回的错误信息,如执行变量验证失败、查询和服务器不匹配等。
  3. 执行错误:查询在服务器上执行时发生的错误,可能是用户定义的错误,也可能是服务器内部错误。
  4. 未知错误:未知的错误类型。

需要根据错误类型,为 GraphQL 服务器编写不同类型的错误处理程序。

处理 GraphQL 的错误

在编写 GraphQL 服务器时,需要使用 GraphQL 的错误处理程序,以便在错误发生时返回可读的错误信息。下面是一些示例代码:

格式化错误消息是一个优秀的 GraphQL 错误处理程序。在上面的代码中,formatError 函数将解析错误并根据错误的来源返回特定的信息。

这个函数根据 error.extensions.exception 是否包含错误信息,判断出错误是由服务器内部错误还是应用逻辑错误引起的。如果是服务器内部错误,则在控制台打印错误堆栈跟踪信息;否则,只返回错误消息,客户端应用程序可以使用这些信息进行错误提示。

记录 GraphQL 的日志

记录日志是一个重要的任务。它可以方便调试,了解应用的运行状况,从而提高应用程序维护效率和使用体验。

在 GraphQL 服务器中,Harmony 定义了 GraphQL 标准跟踪扩展,可以用来记录 GraphQL 查询的执行时间。这个扩展可以通过 context 配置项将其添加到连接中:

在上面的代码中,配置了 ApolloServerPluginInlineTrace 插件,该插件会在返回的结果中加入查询的性能信息。

此外,GraphQL 实现还允许自定义访问日志记录器。以下示例说明了如何将请求的 GraphQL 查询记录到控制台:

在上面的代码中,requestDidStart 函数返回一个拦截器对象,该拦截器对象将 didResolveOperation 生命周期钩子设置为用于记录查询执行信息。

小结

GraphQL 是一种优秀的数据查询语言和运行时环境,可以使应用的数据获取更加灵活和高效。在使用 GraphQL 编写服务器时,我们需要为查询结果处理错误和记录日志,这是开发高质量 GraphQL 应用程序的重要部分。

本篇文章介绍了 GraphQL 处理错误和记录日志的最佳实践,希望能够帮助读者开发出更加健壮、可维护的 GraphQL 应用程序。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d63ca6a941bf7134beed1f