假设我有一个拦截器,它添加了一个UserAgent,我希望这对我所有的请求,即使是非认证的。所以我创建了一个
let baseSession = Session(interceptors: [UserAgentInterceptor()]
现在我需要在登录部分中验证请求,所以我创建
let userSession = Session(intercetors: [AccessTokensInterceptor()]
现在显然userSession没有添加用户代理。是否有可能像okhttp这样做,因为您可以创建一个新的会话实例,这是父会话的浅拷贝?像这样的?
let userSession = Session(parent: baseSession, interceptors: [AccessTokensInterceptor()]
现在用户会话将继承基础的所有配置的东西?
显然,我知道我可以把UserAgentInterceptor添加到我自己的用户会话中,但在实际的项目中,它有点复杂,而且有多个层次
这可能吗?我以为这是delegate
的作用,但它似乎不是。
No。Alamofire不是为这种方式设计的,也不推荐使用。在您的特定实例中,没有必要使用适配器来添加User-Agent
(Alamofire已经添加了一个),因为您可以在URLSessionConfiguration
级别设置这些标头。从根本上说,Alamofire的工作方式类似于URLSession
,因为这是Alamofire的Session
内部使用的。
如果你需要对少于100%的Session
请求应用拦截器,最简单的方法可能就是直接将它们应用于请求。当你创建一个request
时,你可以传递任何你想要的拦截器给它。例如:
AF.request(urlRequest, interceptor: SomeInterceptor())...