遗漏参数时返回所有结果是否是错误的做法?

时间:2019-08-12 13:23:19

标签: graphql

我对GraphQL的概念还很陌生,我想知道在忽略该参数时返回查询中的所有结果是否被认为是不好的做法。

例如,如果我运行此查询:

query {
  item(title: "test") {
    title,
    properties {
      key,
      value
     }
   }
}

它将返回所有属性,但是如果我运行此查询:

query {
  item(title: "test") {
    title,
    properties(group: "test-group") {
      key,
      value
     }
   }
}

它将返回“测试组”中的所有属性。 我尝试在线上和在StackOverflow上搜索此问题,但找不到所需的答案。

虽然我确实设法在GraphQL网站上找到了以下示例,但是我不确定它是否完全相同:

{
  human(id: "1000") {
    name
    height
  }
}
{
  human(id: "1000") {
    name
    height(unit: FOOT)
  }
}

如果有人可以阐明这一点,我将非常感激!

1 个答案:

答案 0 :(得分:3)

这取决于一个项目是否可能具有许多属性,如果多个用户同时检索该项目的所有属性,是否有机会导致服务器内存不足。如果机会非常非常小,那么如果用户忽略了properties字段的参数,则只返回所有属性是非常正常的。

否则,由于内存不足而有机会关闭服务器,总是返回所有属性并不是很好。在这种情况下,您可以应用一些合理的默认值以仅返回前N个属性以防止发生这种情况。

相当于返回记录列表的REST API。如果用户未为分页指定查询参数,则默认情况下它将返回合理数量的记录,但不会返回所有记录。