将参数传递给 graphQL 查询

Passing arguments to graphQL query

我正在努力在节点中设置 graphQL 模式。 /graphql 端点通常会被传递的参数命中。 例如,一个 API 呼叫可能正在寻找 "checking" 个帐户:

query {
  accounts(type: "checking") {
    id
    type
    country
    currency
  }
}

另一个可能正在寻找 "US" 中的所有帐户:

query {
  accounts(country: "US") {
    id
    type
    country
    currency
  }
}

...还有一个人可能正在 "UK" 中寻找 "savings" 账户,以 "GBP" 计价:

query {
  accounts(type: "savings", country: "UK", currency: "GBP") {
    id
    type
    country
    currency
  }
}

是否将此查询定义为采用 typecountrycurrency 的可选参数的正确方法?

这真的取决于你想如何设计你的 API,这个答案没有对错之分,我不确定通常是否有 正确的[=24] =] 方法。

但是,如果您对所描述的情况有把握,那么是的,typecountrycurrency 都应该是可选的,因为您将它们排除在外在一些查询中。如果您没有将它们设为可选,那么如果它们未传入,您的 GraphQL 服务器将抛出错误。

另一种选择是将所有这些参数包装在一个带有可选字段的 filter 对象中。此外,typecurrencycountry 可能更好地表示为枚举而不是字符串 :)