通过删除错误字段来优化 GraphQL 响应可能吗?

Posted

技术标签:

【中文标题】通过删除错误字段来优化 GraphQL 响应可能吗?【英文标题】:Optimize GraphQL Response by Dropping False Fields possible? 【发布时间】:2021-01-29 21:58:27 【问题描述】:

使用 REST API 我可以替换这样的响应:

"formatting": 
  "isBold": false,
  "isItalic": true,
  "isUnderlined": false,
  "isFirstWordOfSentence": false
  ... and so on.
,

只有在它们为真时才返回值的响应,这可能会显着减小响应的大小:

"formatting": 
  "isItalic": true,
,

我想知道是否可以在 GraphQL 中实现类似的东西?

据我所知,GraphQL 不允许空字段?在这方面有没有办法减少响应(JSON)的大小?对于 Graphql,这里通常推荐什么?

非常感谢。

【问题讨论】:

'自定义 json 类型' ? @xadm 是什么意思? 您可以使用任何数组/对象/结构,而无需在架构中定义其内部...使用搜索/文档 【参考方案1】:

GraphQL 响应应该与产生它的查询相匹配。如果请求了一个字段,则应始终在响应中返回它。 GraphQL 客户端库假设是这种情况,因此删除具有 falsenull 值的字段可能会导致客户端应用程序中出现不可预知的错误。即使使用 REST API,通常也不建议像这样转换您的响应,因为这会使 API 更难被使用。

如果您担心回复的大小,这里有一些一般提示:

实现分页以限制在解析返回列表的字段时返回的元素数量。在不久的将来,您还可以使用 @stream 指令来实现此目的。 不要在您的 API 中公开不必要的字段,只请求您实际需要的字段。 在您的 HTTP 服务器上启用压缩。

【讨论】:

以上是关于通过删除错误字段来优化 GraphQL 响应可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

中继/ graphql:可为空的响应或捕获查询错误的方法

压缩 GraphQL 查询?

“文件”类型的 GraphQL 错误字段“图像”必须具有子字段选择。您的意思是“图像 ... ”吗?

比较 GraphQL Hasura 中的两个字段

我可以通过 graphQL 查询多次查询 GraphQL 单一响应吗?

GraphQL:接受缺少请求字段的查询响应?