Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphql最佳实践:一次多个查询或数组参数_Graphql_Graphql Js - Fatal编程技术网

Graphql最佳实践:一次多个查询或数组参数

Graphql最佳实践:一次多个查询或数组参数,graphql,graphql-js,Graphql,Graphql Js,我面临一个关于graphql项目的小设计决策 模式是: type Foo { id: ID! } type Query { getFoo(id: ID):Foo } 检索多个Foo非常冗长: query { A : getFoo(id:1) { id } B : getFoo(id:2) { id } ... } 我正在考虑将模式更新为: type Foo { id: ID! } type Query { getFoo(input: [

我面临一个关于graphql项目的小设计决策

模式是:

type Foo {
  id: ID!
}

type Query {
  getFoo(id: ID):Foo
}
检索多个Foo非常冗长:

query {
  A : getFoo(id:1) {
    id
  }
  B : getFoo(id:2) {
    id
  }
  ...
}
我正在考虑将模式更新为:

type Foo {
  id: ID!
}

type Query {
  getFoo(input: [ID]):[Foo]
}
如果查询的对象不止一个,这将有助于减少冗余和更轻的请求,但它需要实现服务器端


两个选项中哪一个是好方法?差别很小,但由于我只是从graphql开始,我想选择最佳实践。

我最终选择保留原始模式

type Foo {
  id: ID!
}

type Query {
  getFoo(id: ID):Foo
}
我的主要理由是:

  • 语义正确
  • 给客户更多的自由
  • 在原子查询上更容易实现输入验证
  • 每个查询都需要解决一个数据库事务。未能改变数据库数据将导致整个事务回滚。根据你的需要,你可能会想要这个