【问题标题】:What are good GraphQL query patterns?GET 查询的 GraphQL 命名约定
【发布时间】:2022-12-03 02:06:16
【问题描述】:

什么是 GraphQL GET 查询合同的好模式。考虑以下:

// `id` and `email` are guaranteed unique. 
getUserById(id)
getUserByEmail(email)

或者应该这样写:

getUser({ id })
getUser({ email })

在这种情况下,解析器将选择字段并据此进行查询。

一些优点/缺点:

  • pro:对这两种类型使用一个查询可以在添加更多字段时更加灵活,而不是为每个类型创建新查询。
  • 亲:使用一个查询比寻找不同的界面更容易理解。
  • pro:如果消费者想要动态更改类型,则您不必完全编写另一个查询。
  • 缺点:必须在解析器中手动处理验证。
  • 缺点:解析的后端复杂性增加了。

【问题讨论】:

    标签: graphql


    【解决方案1】:

    我在项目中有一些类似的查询,我倾向于使用第二种模式。由于我使用 [knex]{https://knexjs.org/} orm,我的解析器复杂性没有增加。只是:

    getUser: (parent,args,context) => knex('user').where(args).first()
    

    多亏了 GraphQL 查询定义,我可以将 args 限制为具有特定类型的某些键。

    对于保证结果唯一的参数,这很好。如果 args 可能产生一个非唯一的答案,那么您可能希望以不同的方式处理它们。还有一个问题是,如果 idemail 在您的案例中没有指向同一条记录,该怎么办。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-10
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      相关资源
      最近更新 更多