小编Exi*_*lis的帖子

使用 Cognito 用户池向 AWS AppSync 验证 Apollo 客户端

我正在尝试使用普通的 Apollo Client 连接到我的 AWS AppSync API,但我不确定如何正确构建身份验证标头。

到目前为止,我已经按照此处的标头身份验证文档进行操作:https : //www.apollographql.com/docs/react/recipes/authentication.html

并有此代码,我将其修改为包含对 Amplify 身份验证服务的令牌调用,但它返回 401 错误:

const httpLink = createHttpLink({
  uri: '[API end point address]/graphql'
});

const authLink = setContext((_, { headers }) => {
  const token = async () => (await Auth.currentSession()).getAccessToken().getJwtToken();
  return {
    headers: {
      ...headers,
      authorization: token ? `Bearer ${token}` : ""
    }
  }
})

const client = new ApolloClient({
  link: authLink.concat(httpLink),
  cache: new InMemoryCache()
})
Run Code Online (Sandbox Code Playgroud)

我能找到的与此相关的唯一文档没有提供任何技术说明:

使用 Amazon Cognito 用户池时,您可以创建用户所属的组。此信息编码在 JWT 令牌中,您的应用程序在发送 GraphQL 操作时将其在授权标头中发送到 AWS AppSync。 …

javascript amazon-web-services apollo graphql aws-appsync

5
推荐指数
1
解决办法
4015
查看次数

了解AWS AppSync JavaScript SDK中的Apollo客户端缓存和开放式UI

我正在尝试使用AWS AppSync JavaScript SDK在Apollo客户端中实现缓存,但我一直在努力了解首先要使用缓存的最佳方法,其次是如果需要进行任何更改以适应Apollo V2教程以与AppSync配合使用,该如何做? SDK。

关于使用缓存,我有一个对象列表,然后我想从该列表中查看和修改单个对象。关于如何更新列表中的某些内容的教程很多,但是我宁愿运行第二个查询,该查询通过其ID获取单个对象,以便该页面始终可以工作,而不必先浏览列表。

缓存是否足够聪明,以至于知道通过查询Y和Z获得的对象X是同一个对象,并且将同时进行更新?如果没有,是否有任何文档说明如何编写将同时更新列表中的对象和本身的更新?

如果没有文档,那么我将自己尝试并发布代码(因为它很可能无法工作)。

关于第二个问题,我已使应用程序正常运行,并使用Amplify进行身份验证来查询API,但不确定如何正确实现缓存。创建客户端时是否需要指定缓存,或者SDK具有内置缓存?如何访问缓存?是否只是像这些教程中那样通过查询客户端?https://www.apollographql.com/docs/react/advanced/caching.html

javascript apollo graphql

1
推荐指数
1
解决办法
955
查看次数