我正在为我们的项目之一使用Angular Apollo。我正在将apollo客户端创建为:
Array
(
[cart] => Array
(
[0] => Array
(
[product_id] => 12
[price] => 100
[quantity] => 2
)
[1] => Array
(
[product_id] => 11
[price] => 400
[quantity] => 7
)
)
)
由于我们的uri有一个访问令牌,该令牌也会在某个时间点后过期,因此我们必须刷新它并获取新的访问令牌,从而得到一个新的uri。
我无法在apollo文档中找到有关更新uri的方法的任何方法(也许我错过了吗?),如果我创建了这样的新实例,还会抛出一个错误,提示apollo客户端已经存在礼物。
有什么方法可以更新uri吗?
答案 0 :(得分:1)
我知道它不是Apollo Angular文档的一部分(欢迎PR!),但是我在apollo-angular-link-http
的自述文件中对此进行了描述。
有两种方法:
使用Apollo链接拦截查询并在上下文中设置uri
属性
const authMiddleware = setContext((operation, { uri }) => {
return refreshToken().then(res => ({
uri: this.getURI()
})
}))
或者使用Angular的HttpClient拦截器拦截请求并更改端点。
答案 1 :(得分:0)
我能够这样替换它:
this.apollo.removeClient();
this.apollo.create({
cache: new InMemoryCache(),
link: this.httpLink.create({
uri: '<new-backend-url>',
})
});