通过删除错误字段来优化 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 客户端库假设是这种情况,因此删除具有 false
或 null
值的字段可能会导致客户端应用程序中出现不可预知的错误。即使使用 REST API,通常也不建议像这样转换您的响应,因为这会使 API 更难被使用。
如果您担心回复的大小,这里有一些一般提示:
实现分页以限制在解析返回列表的字段时返回的元素数量。在不久的将来,您还可以使用@stream
指令来实现此目的。
不要在您的 API 中公开不必要的字段,只请求您实际需要的字段。
在您的 HTTP 服务器上启用压缩。
【讨论】:
以上是关于通过删除错误字段来优化 GraphQL 响应可能吗?的主要内容,如果未能解决你的问题,请参考以下文章
“文件”类型的 GraphQL 错误字段“图像”必须具有子字段选择。您的意思是“图像 ... ”吗?