[英]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.