GraphQL预先批准的查询

时间:2017-08-11 14:16:27

标签: graphql

  

我读到Facebook的内部服务器接受开发中的任何查询   模式,这些都是缓存的。在生产中,只有预先批准/缓存   允许查询。这被提到作为其他服务器的模型   应该采用。

有人知道他们使用什么工具吗?这个过程在某处更详细地描述了吗?

1 个答案:

答案 0 :(得分:2)

我不知道它在facebook中是怎么回事,但我可以解释一下我是如何在GraphQL Guru中做到的。由于graphql是语言不可知的,我将在没有特定语言的情况下进行解释。

持久查询工作的方式是客户端将具有唯一ID和变量的查询发送到graphql(持久查询就绪)服务器。

{ "id": "1234", "varibles": { "firtName": "John", "lstName": "Smith" } }

对于id,请不要使用查询的哈希值,因为这会产生不同大小的长ID名称,这会破坏目的。

在您的服务器上,创建一个与持久查询ID同名的文件,其中包含实际的graphql查询。或者将其保存在数据库中。

要获取graphql查询,您需要通过中间件拦截它。中间件通过其id检索graphql查询,并将查询传递给graphql端点。根据查询的定义方式,中间件可能需要解析它。此外,如果持久化查询ID不存在,则可以在中间件中进行白名单。

然后graphql端点正常处理查询。

您可以在此处查看nodejs示例https://github.com/otissv/guru-express-server/blob/master/src/routes/graphql-route.js