它看起來像我的公司將會從阿波羅客戶端持久化的查詢前進,因爲在這裏討論:https://dev-blog.apollodata.com/persisted-graphql-queries-with-apollo-client-119fd7e6bba5如何配置Graphene-Django以使用持久查詢?
在這篇文章中有提到需要做的服務器上的中間件的東西。我一直無法找到任何有關Graphene-Django需要改變的信息。
任何人都可以提供任何建議嗎?
羅伯特
它看起來像我的公司將會從阿波羅客戶端持久化的查詢前進,因爲在這裏討論:https://dev-blog.apollodata.com/persisted-graphql-queries-with-apollo-client-119fd7e6bba5如何配置Graphene-Django以使用持久查詢?
在這篇文章中有提到需要做的服務器上的中間件的東西。我一直無法找到任何有關Graphene-Django需要改變的信息。
任何人都可以提供任何建議嗎?
羅伯特
持久化的查詢是不是和GraphQL規範的一部分,因此,可以在各種各樣的方式來實現。這裏有一個如何想這樣做,你的服務器上的幾個例子:
提取查詢
在編寫這本書的時候,你可以提取與繼電器現代的阿波羅客戶端靜態查詢,和別的。它們都以類似的方式工作,所以我將以Apollo PersistGraphQL爲例。在你的版本中,你需要在你的src目錄上運行persistgraphql
命令來提取你的靜態查詢。該命令的結果將是一個充滿查詢的JSON文件,字符串和一個數字作爲值。
{
"
{
author {
firstName
lastName
}
}
": 9,
"
query otherQuery {
person {
firstName
lastName
}
}
": 10
}
使用提取查詢
從這裏,你有幾種選擇。一旦您的服務器知道所有可能的查詢,它可以提供JSON文件中提供的值的接口,也可以將其知道的查詢列入白名單。如果您的服務器僅提供了一個接口(上面示例中的myserver/api/9
,myserver/api/10
),則需要確保您的客戶端應用程序通過使用相同的JSON文件將其查詢映射到那些同意的ID。或者,您可以使用該文件來防止在不修改客戶端的情況下執行意外的查詢。
如何專門設置服務器以使用此JSON文件取決於您。有些人會預先執行一組已知的查詢,並將它們放入像Redis這樣的快速數據存儲中。有些人嚴格使用它來防止未經授權的查詢。就Django-Graphene如何實現這一點而言,我沒有意識到現成的解決方案,但是消費類似上面提到的關鍵/值存儲應該爲您的團隊提供一堆好的選項。
謝謝你的迴應。你的解釋揭示了更多,但我仍然不知道如何將你描述的內容添加到服務器。請記住,我對石墨烯很新。根據你寫的內容,我只是搜索:石墨django白名單查詢 但它沒有透露任何有用的。 我希望別人會回答這個方程的服務器端部分的線索。 –