前言
在前端开发中,GraphQL 是一个非常流行的 API 查询语言。可以通过 GraphQL 查询语言来获取所需的数据。程序员可以通过一个简单而强大的 API 进行数据查询,GraphQL API 可以轻松地访问多种前端设备、移动设备、服务器端和 Web 应用程序。在 GraphQL 的 API 接口中,往往会出现各种错误信息,如何有效的处理这些错误信息,使得我们前端开发更加顺畅,这就需要一个合适的 npm 包来进行处理。graphql-apollo-errors 是一个专门用于 GraphQL API 接口错误信息的 npm 包,可以有效的处理各种错误信息。
安装 graphql-apollo-errors
使用 npm 安装 graphql-apollo-errors。
$ npm install graphql-apollo-errors
安装完成后,需要在 Apollo 客户端中添加插件。
-- -------------------- ---- ------- ------ - ------------ - ---- ---------------- ------ - ----------- - ---- ----------------------- ------ - ----------- - ---- ------------------------ ----- ------ - --- -------------- --------- ---------- ------------ -- --- ----------- -- - ------ ---
使用 graphql-apollo-errors
graphql-apollo-errors 对于解析器错误和验证错误提供了内置的错误处理。对于其他类型的错误,可能需要一些自定义代码。
内置的错误处理
以下是 graphql-apollo-errors 的内置错误处理。
解析器错误
在解析查询时发生错误。
-- -------------------- ---- ------- - --------- - - ---------- ------- ------ -------- ----- ----- ----- ------------ - - ------- -- --------- -- - - - - -
如果要让这些错误更友好地呈现,则可以向 formatError
传递一个 ApolloError
对象。
const formatError = error => { if (error instanceof SyntaxError) { return new ApolloError('Error parsing GraphQL query', 'GRAPHQL_PARSE_FAILED'); } return error; };
这将把解析器错误转换为 GRAPHQL_PARSE_FAILED
错误。可以使用 Apollo 客户端的 onError
回调来检查这些新错误。
-- -------------------- ---- ------- ----- ------ - --- -------------- ---- ----------- -------- -- -------------- ------------- ---------- ------- -- -- - -- --------------- - ------------------------ -------- ---------- ---- -- -- --------------------- ------- -------- ----------- --------- ------------- ----- --------- -- - -- -------------- - --------------------- ------- ------------------ - -- ---
在客户端控制台中,应该看到以下输出。
[GraphQL error]: Message: Error parsing GraphQL query, Location: undefined, Path: undefined
验证错误
GraphQL 查询没有通过验证时发生的错误。
-- -------------------- ---- ------- - --------- - - ---------- --------- ------- -- --- ---------- ------------ - - ------- -- --------- - - - - - -
如果要让这些验证错误更友好地出现,则可以使用以下代码。
const formatError = error => { if (error instanceof ValidationError) { return new ApolloError('Validation failed', 'GRAPHQL_VALIDATION_FAILED', { validationErrors: error.errors, }); } return error; };
这会将验证错误转换为 GRAPHQL_VALIDATION_FAILED
错误,并添加 validationErrors
属性。可以使用 Apollo 客户端的 onError
回调来检查这些新错误。
-- -------------------- ---- ------- ----- ------ - --- -------------- ---- ----------- -------- -- -------------- ------------- ---------- ------- -- -- - -- --------------- - ------------------------ -------- ---------- ----- ---------- -- -- - -- ---------------- --- ---------------------------- - --------------------- ------- ---------- ------- --------------------------------- - ---- - --------------------- ------- -------- ----------- --------- ------------- ----- ---------- - --- - -- -------------- - --------------------- ------- ------------------ - -- ---
可以在控制台中看到以下输出。
[GraphQL error]: Validation errors: [ { message: '"$name" is not defined', field: 'name' } ]
自定义错误处理
可以使用 formatError
函数来自定义错误处理。以下是一个示例代码。
const formatError = error => { if (error instanceof BusinessLogicError) { return new ApolloError(error.message, 'GRAPHQL_BUSINESS_LOGIC_FAILED', { businessLogicErrors: error.errors, }); } return error; };
结论
graphql-apollo-errors 是一个非常强大的 npm 包,可以有效的处理 GraphQL API 接口中的错误信息。在使用此包的过程中,需要了解其内置的错误类型以及如何自定义错误处理。对于应用程序开发人员来说,这是一个非常有用的 npm 包,可以使 GraphQL API 接口的开发变得更加顺畅。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056b2681e8991b448e53bc