Hy我在一个项目中使用Apollo GraphQL
方法,它工作正常。但现在客户端需要使用Apollo API添加额外的头。但添加头后,API的响应返回为 unAuthorized。
我添加了标题,
let apolloAuth: ApolloClient = {
let configuration = URLSessionConfiguration.default
// Add additional headers as needed
configuration.httpAdditionalHeaders = ["Authorization" : self.singleTonInstance.token]
configuration.httpAdditionalHeaders = ["channel" : "mobile"]
let url = URL(string: "http://xxx/graphql")!
return ApolloClient(networkTransport: HTTPNetworkTransport(url: url, configuration: configuration))
}()
字符串
任何人都可以帮助我了解如何使用Apollo GraphQL添加标题。
9条答案
按热度按时间bwntbbo31#
更新:“Apollo Client v0.41.0”和“Swift 5”解决方案
我在使用Apollo Client v0.41.0和Swift 5.0时也遇到了同样的问题,但上述解决方案都不起作用。经过几个小时的试用,终于找到了解决方案。下面的解决方案是使用Apollo Client v0.41.0和Swift 5进行测试的
字符串
mm9b1k5b2#
从Apollo Client v0.34.0及以上版本开始,之前提供的代码将无法工作,因为他们重写了它以前的工作方式。以下是对我有效的代码.有关更多信息,请参阅此处链接中的文档。
字符串
fjaof16o3#
最后我找到了答案。按以下方式添加标题,
字符串
希望它能帮助某人。
6jygbczu4#
接受的解决方案现在已经过时,因为HTTPNetworkTransport不再接受配置参数,而是直接接受
URLSession
而不是URLSessionConfiguration
下面是一个示例,如何在每个请求上向Apollo客户端发送授权头,如果找到,则从Apollo客户端(iOS)的
version 0.21.0
中的Username中检索它。字符串
zbsbpyhn5#
更新:Apollo Client v0.34.0后不推荐使用此解决方案
以前的答案是旧的,现在通过委托完成:
该协议允许对请求进行飞行前验证,能够在修改请求之前进行保释,并能够使用附加标头等内容修改URLRequest。
字符串
这里有一个链接到文档的更多细节:
https://www.apollographql.com/docs/ios/initialization/
bqujaahr6#
导入这两个元素
字符串
创建一个类Network并粘贴到下面的源代码
型
在Network类中添加NetworkInterceptorProvider
型
}
在Network类中也添加CustomInterceptor
型
}
finally从ViewController调用此方法
型
fjaof16o7#
NetworkInterceptorProvider:LegacyInterceptorProvider更改为“DefaultInterceptorProvider”
字符串
}
q9rjltbz8#
更新了Apollo 1.6.1的解决方案
字符串
快乐编程
xtupzzrd9#
我一直在学习https://www.apollographql.com/docs/ios/tutorial/tutorial-execute-first-query的教程
如果你的目标只是添加一个自定义头,那么最简单的方法就是
字符串
希望能对大家有所帮助!