GraphQL异步查询结果

问题描述 投票:1回答:1

我正在尝试使用GraphQL实现批处理查询接口。我可以得到一个同步工作的请求,没有问题,但是我不确定如何使结果异步。基本上,我希望能够启动查询并返回某种指向完成查询后最终结果的指针。我想这样做,因为查询有时可能需要一段时间。

在REST中,这很简单。您返回202并返回一个Location标头,该标头指向客户端可以在何处获取结果。 GraphQL作为规范似乎没有这个概念。它似乎总是希望同步处理请求。

在GraphQL中执行这样的操作是否有约定?我非常喜欢查询规范,但是在后端执行大型查询时,我不希望客户端HTTP连接打开几分钟。如果发生任何事情终止该连接,即使结果本身是持久的,也将需要重试整个查询。

graphql batch-processing
1个回答
0
投票

您尝试执行的操作无法以符合规范的方式轻松解决。阿波罗(Apollo)引入了@defer指令的想法,该指令几乎可以满足您的需求,但它仍是一个实验功能。我相信现代继电器is trying to do something similar

想法实际上是相同的-客户端使用指令将字段或片段标记为可延期。服务器解析请求,但将延迟字段保留为空。然后,它将带有延迟数据的一个或多个补丁发送到客户端。客户端能够将初始请求和补丁分别应用于其缓存,从而每次照常触发相应的UI更改。

© www.soinside.com 2019 - 2024. All rights reserved.