【发布时间】:2019-08-31 23:49:09
【问题描述】:
对于突变addVoucher,可能发生的潜在错误是有限的。
- 优惠券代码无效
- 优惠券已过期
- 优惠券已兑换
目前,当其中一个发生时,我会抛出一个自定义错误。
// On the server:
const addVoucherResolver = () => {
if(checkIfInvalid) {
throw new Error('Voucher code invalid')
}
return {
// data
}
}
然后在客户端上搜索消息描述,以便提醒用户。然而,这感觉很脆弱,而且 GraphQL API 也不会自动记录潜在的错误。有没有办法定义 GraphQL 模式中的潜在错误?
目前我的架构如下所示:
type Mutation {
addVoucherResolver(id: ID!): Order
}
type Order {
cost: Int!
}
如果能做这样的事情就好了:
type Mutation {
addVoucherResolver(id: ID!): Order || VoucherError
}
type Order {
cost: Int!
}
enum ErrorType {
INVALID
EXPIRED
REDEEMED
}
type VoucherError {
status: ErrorType!
}
那么任何使用 API 的人都会知道所有潜在的错误。这对我来说感觉像是一个标准要求,但从阅读来看,似乎没有标准化的 GraphQL 方法。
【问题讨论】:
标签: graphql