是否有可能在AlamoFire中创建会话实例的层次结构?



假设我有一个拦截器,它添加了一个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())...

最新更新