看起来我的公司将继续从阿波罗客户端进行持久化查询,正如这里所讨论的:https://dev-blog.apollodata.com/persisted-graphql-queries-with-apollo-client-119fd7e6bba5
在本文中,提到了需要对服务器上的中间件做些什么。我找不到任何关于Graphene-Django需要更改的信息。
有没有人能给点建议?
罗伯特
发布于 2017-07-24 06:13:22
持久化查询不是GraphQL规范的一部分,因此可以通过多种方式实现。以下是您可能想要在服务器上执行此操作的几个示例:
提取查询
在撰写本文时,您可以使用Relay现代版、Apolo客户端和其他工具提取静态查询。它们的工作方式都很相似,所以我将以Apollo PersistGraphQL为例。在您的构建中,您将需要在src目录上运行persistgraphql命令来提取静态查询。该命令的结果将是一个JSON文件,其中充满了查询、字符串和一个数字作为值。
{
"
{
author {
firstName
lastName
}
}
": 9,
"
query otherQuery {
person {
firstName
lastName
}
}
": 10
}使用提取的查询
在这里,您有几个选项。一旦您的服务器知道了所有可能的查询,它可以为JSON文件中提供的值提供一个接口,也可以将它所知道的查询列入白名单。如果您的服务器仅提供对值的接口(在上面的示例中为myserver/api/9、myserver/api/10 ),则需要确保您的客户端应用程序通过使用相同的JSON文件来将其查询映射到那些约定的it。或者,您可以使用该文件来防止在不以任何方式修改客户端的情况下执行意外查询。
如何专门设置服务器以使用此JSON文件由您决定。有些人会预先执行一组已知的查询,并将它们放入一个快速的数据存储中,比如Redis。有些人严格地使用它来防止未经授权的查询。至于Django-Graphene是如何做到这一点的,据我所知,没有现成的解决方案,但是像上面这样使用提取的键/值存储应该会为您的团队提供一堆很好的选择。
发布于 2019-02-06 22:25:59
可以检查Graphene Django的持久化查询
https://stackoverflow.com/questions/45224911
复制相似问题