GraphQL是一种由Facebook开发的查询语言,它可以定义API的类型系统,使前端和后端开发者之间的沟通更加简单。在GraphQL API中,错误处理和验证是非常重要的一部分,因为您需要确保API返回的数据是正确和安全的。在这篇文章中,我们将讨论如何在GraphQL API中添加错误处理和验证,以确保API能够安全和有效地工作。
错误处理
在GraphQL API中,错误可以以多种形式出现。例如,由于提交的查询包含错误的参数,返回类型可能无效,或者您在解析查询时遇到了未知的错误。为了处理这些错误,GraphQL提供了一种称为错误处理的方式。错误处理是一种在GraphQL API中跟踪和处理错误的机制。
1. 错误类型定义
在GraphQL API中定义错误类型是非常重要的,通过这样做,您可以让Web客户端更好地了解API返回的错误信息。定义错误类型的方式可以参考下面的示例代码:
-- -------------------- ---- ------- ---- ----- - - ----- --------------- ------ --------- - - ------ ---- ----- - ----- ---- -------- ------- - - ------ ---- -------- - ----- ---------- ------ ----- -
在这个例子中,我们定义了一个错误类型,包含错误代码和错误信息。在响应类型中,我们通过将错误类型Error
实例化来表示API的错误。
2. 错误处理代码示例
一旦定义了错误类型,您需要编写一些错误处理代码来实现API的错误处理。查看下面的示例代码,其中包含了一个错误处理的代码示例,当输入的参数包含错误时,输出一个Error
实例。
-- -------------------- ---- ------- ----- - ------------------ -------------- -------------- ----------- - - ------------------- ----- -------- - --- ------------------- ----- ----------- ------- -- -- -- --- ------ ------------ ----- ------ --------------- --- --- ----- --------- - --- ------------------- ----- -------- ------- -- -- -- ----- ------ ------------ -------- ------ --------------- --- --- -- ------ ----- --------- - --- ------------------- ----- -------- ------- - ------------ - ----- --------- -- ----------- ----- - --- ------ ------------ -- -------- ------ ----- -- - -- -------- --- -- - -- ------ ------ - ------ - ----- ---- -------- ---- ------- - -- - -- ------ ------ - --- -------- ----- ----- ---- ------ -- -- -- -- --- -- --------- ------ ----- ------ - --- --------------- ------ ---------- --- -------------- - -------
在这个示例代码中,我们在resolve
函数中添加了一个判断逻辑,当参数id
不等于1时,返回一个Error
实例。这个例子只是一种简单的错误处理的方式,更复杂的实现方式需要根据具体的业务逻辑来设计。
验证
除了错误处理之外,GraphQL API还需要验证来确保提交的查询是正确和安全的。GraphQL提供了一种称为验证的机制,它可以验证查询和变量是否符合API的类型定义。
1. 查询和变量的验证
GraphQL API接收的查询和变量是需要验证的,如果提交的查询包含类型错误或者缺少必要的参数,则会返回对应的错误信息。下面是一个示例,展示了如何验证一个提交的查询:
query SomeDataQuery($id: Int!, $name: String) { getSomeData(id: $id) { id name } }
在这个例子中,查询需要传递必要的参数id
和可选的参数name
。当您发送这个查询时,服务端会检查这个查询是否符合API的类型定义,如果API定义需要两个参数(例如,id
和 name
),则服务端会拒绝只包含id
参数的查询,并返回一个错误信息。
2. 验证示例
GraphQL API的验证代码示例,可以参考下面的代码:
-- -------------------- ---- ------- ----- - ------------------ -------------- -------------- ----------- - - ------------------- ----- -------- - --- ------------------- ----- ----------- ------- -- -- -- --- ------ ------------ ----- ------ --------------- --- --- -- ------ ----- --------- - --- ------------------- ----- -------- ------- - ------------ - ----- --------- -- ----------- ----- - --- ------ ------------ -- --------- ----- ------ -------- -- - -- ------------ -- ------- ------- --- --------- - ----- --- -------------- ----------- - -- ---- ------- -- -------- ------ ----- -- - -- ------ ------ - --- -------- ----- ----- ---- ------ -- -- -- -- --- -- --------- ------ ----- ------ - --- --------------- ------ ---------- --- -------------- - -------
在这个代码中,我们定义了一个validate
函数来验证传入的查询是否符合类型定义。当validate
函数抛出一个错误时,会返回一个错误信息。在这个示例中,我们检查了查询的参数是否为数字类型,如果不是则返回一个错误信息。
结论
在GraphQL API开发过程中,错误处理和验证是非常重要的一部分。通过定义错误类型、验证查询和变量,可以使GraphQL API的开发更加安全和可靠。在实际开发中,您需要根据具体业务逻辑来设计实现细节,以确保API能够安全有效地工作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67347bb60bc820c5824962b4