在开发前端应用的过程中,我们经常会使用到一些数据接口来获取数据,并将其渲染到页面中。而开发这些数据接口往往需要使用到后端技术以及相关的库和工具。其中,GraphQL 是当前比较流行的一种数据接口编程语言。而在实现 GraphQL 接口时,我们可能会遇到一些错误处理的问题。今天我们来介绍一个 npm 包:apollo-server-errors,它可以帮助我们更好地处理 GraphQL 接口的错误。
apollo-server-errors 简介
apollo-server-errors 是为 Apollo-Server 打造的一个 GraphQL 接口错误管理库。它可以让你轻松地报告你的错误信息,提供友好的错误响应,还能够通过自定义错误日志来记录所有的错误信息。
apollo-server-errors 使用教程
接下来,我们将使用一个基于 Node.js 和 Apollo-Server 的 GraphQL 应用来使用 apollo-server-errors 库。
步骤 1:安装依赖
首先,我们需要安装 apollo-server-errors 库及其他相关依赖。打开你的终端(terminal)并进入你的项目目录,使用 npm 安装以下依赖:
npm install apollo-server apollo-server-express express graphql apollo-server-errors --save-dev
其中,apollo-server 和 apollo-server-express 为 Apollo-Server 库和 Express 库,graphql 为 GraphQL 库,apollo-server-errors 为我们所需要的错误处理库。
步骤 2:创建服务器
在应用的根目录下创建一个 server.js 文件,并在其中编写如下代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ------------ - - --------------------------------- ----- - --------- --------- - - -------------------- ----- --- - ---------- ----- ------ - --- -------------- --------- ---------- ------------ ------- -- - ----- ------- - ------------------------------ -------- --------- ----------- ------ - -------- ----------- ----------------- -- -- --- ------------------------ --- --- ------------ ----- ---- -- -- -- ------------------- ----- -- -------------------------------------------- --
这里我们创建了一个 Express 服务器,并将其与 ApolloServer 集成。在 ApolloServer 的构造函数中我们配置了 typeDefs 和 resolvers,它们分别用于定义 GraphQL Schema 和 Resolver。此外我们还使用了 formatError 函数来定制化 Error 格式。
步骤 3:创建 Schema
在根目录下创建一个 schema.js 文件,并在其中编写如下代码:
-- -------------------- ---- ------- ----- - --- - - --------------------------------- ----- - ------------ ----------- - - -------------------------------- ----- -------- - ---- ---- ----- - --------------- ------ ------- - -- ----- --------- - - ------ - ------------ --- - -- -- -- - -- --- --- -- - ----- ----------------- --- ------- - ----- ----------------- ---------------- - ----- ------- -- --- - ---- -- --- --- -- - ----- --- ----------------- -- --- ------------ ------------------------ - ---- - ------ -------- - -- -- -- -------------- - - --------- ---------- --
将 typeDefs 中定义的 Query 节点下的 getUsername 解析函数中加入错误处理。根据输入参数 id 的不同,你可以抛出不同类型的错误。createError 函数可以让你定义多种类型的错误。而 new ApolloError 则为 apollo-server-errors 中提供的一个内置错误。
步骤 4:测试错误处理
启动应用,并在浏览器中打开 GraphiQL 界面测试你的错误处理。
你可以测试以下三种场景:
- 输入 id 为 0,产生一个 createError 创建的错误
- 输入 id 为 1,产生一个内置的 ApolloError 错误
- 输入 id 为其他值,返回成功响应
如下图所示,当我们输入 id 为 0 时会得到如下错误信息:
当我们输入 id 为 1 时,我们会得到以下不同类型的错误信息:
如上图所示,我们可以很清晰地看到错误的类型、捕获的消息以及自定义的 Extensions,这是由 apollo-server-errors 框架提供的。当然,我们也可以通过自定义 formatError 函数来适应自己的业务场景。
总结
在本篇教程中,我们学习了如何使用 apollo-server-errors 库来处理 GraphQL 接口的错误。本文详细地讲解了 apollo-server-errors 的安装及使用方法,并通过一个具体的示例展示了如何使用该库来处理 GraphQL 接口的常见错误。希望这篇文章对你的工作有所帮助,也欢迎你进一步深入学习 apollo-server-errors 来适应更多的业务需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/72738