[英]How to store data in Apollo cache using GraphQL in Xamarin?
我正在使用 GraphQL 使用 AppSync 同步 aws dynamoDB 中的數據。
但現在我需要存儲從 GraphQL API 獲得的數據
我發現可以使用 Apollo 客戶端將這些數據存儲在緩存中,以便能夠在離線模式下使用這些數據。
這是我使用 GraphQL 使用的代碼:
amazonAppSyncClient = new AmazonAppSyncClient ("ACCESS_KEY_ID", "SECRET_ACCESS_KEY", REGION);
graphQLClient = new GraphQLClient ("https://6vl6q5h2c5bxrbmlimiia5hldy.appsync-api.us-west-2.amazonaws.com/graphql",
new GraphQLClientOptions {
HttpMessageHandler = new AWS4SignerMessageHandler (
amazonAppSyncClient,
"ACCESS_KEY_ID",
"SECRET_ACCESS_KEY")
});
public async Task<List<Book>> GetAllBooks () {
var graphQLResponse = await graphQLClient.PostQueryAsync (@"query getBooks {
listBooks {
items {
Id
Title
ISBN
Price
PageCount
Author}}}");
var json = graphQLResponse.Data;
var value = json.GetValue ("listBooks").GetValue ("items");
List<Book> books = value.ToObject<List<Book>> ();
return books;
}
我從這里使用了這個代碼: https://gist.github.com/NeilBostrom/cab8b9275e39bb90ecf8e06ab980664b
如何使用 apollo 在本地保存返回的數據?
如果你想在移動平台上使用 AppSync/Apollo 和 Xamarin 實現適當的離線緩存,你必須做很多工作。 首先,Apollo 是 Android 和 iOS 的原始緩存 GraphQL 客戶端,而 Amazon AppSync ZF20E3C5E54C0AB3D375D66 庫是基於這些的。 他們只是在上面構建了一些亞馬遜特定的功能。
The problem is that even though libraries exist for both iOS and Android, they cannot be used as is with Xamarin, a separate binding project needs to be created so that you can invoke the libraries in you Xamarin specific C# code.
這是您需要做的:
編輯:如果上面看起來工作太多,您可以考慮的其他選項:
嘗試為Apollo iOS和Apollo Android創建一個綁定,並嘗試以這種方式實現緩存。 無論如何,AppSync SDK 在內部使用它們(如下圖所示),因此它們應該適合該任務。 資源
如果您沒有綁定到 Amazon 平台,還有其他幾個 Graph QL 數據庫和提供程序可能對 Xamarin 有更好的支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.