第一节

网络请求的流程:https://juejin.cn/post/6910223545154928648(资料链接)

1.创建URLRequest,如果request有适配器,接下来会使用适配器处理原始URLRequest, 没有适配器的话,直接回调创建Request方法

2.创建URLSessionTask成功

3.收到请求指标回调

4.由Alamofire创建抛出的错误, 比如自定义认证处理失败,(OAuth2认证)

5.URLSessionTask请求完成,可能成功可能失败,接下来会判定是否需要重试,如果会重试,该回调会被调用多次

6.准备开始重试(在这里可以做refreshToken)

7.请求完成,开始解析响应数据

8.Request调用resume方法的时候会回调该方法

9.Request关联的URLSessionTask继续的时候回调

10.Request调用suspend挂起

11.Request关联的Task被挂起

12.Request调用cancel

13.Request关联的Task被取消

14.检测响应是否有效成功后回调(这里是最后解析出来的结果)

15.DataRequest成功创建Data类型的DataResponse时回调(没有序列化)

16.DataRequest成功创建序列化的DataResponse时回调

17.检测响应有效成功

18.从stream中成功序列化数据后调用

二,上传UploadRequest 特有事件

1.上传请求成功创建Uploadable协议对象成功

2.当上传请求从InputSteam开始提供数据时回调, 只有在上传请求的InputStream不是Data也不是文件url类型才会回调

3.用来创建上传请求, 可以从内存(Data), 磁盘(file从文件上传, 并可以设置上传完成后是否删除源文件), 流(InputStream)上传数据, 注意上传请求是

三,DownloadRequest 特有事件

1.下载Task完成,且缓存文件被清除之后回调

2.下载请求成功创建转存目录后回调

3.下载请求检测有效性成功

4.使用原数据解析响应成功(没有序列化)

5.序列化解析响应成功

下载任务会先把文件下载到临时的缓存路径, 然后将文件拷贝到下载目标路径, 使用闭包来决定可以把下载路径的决定推迟到下载完成时, 可以根据临时文件目录与下载响应头来决定下载目标路径以及文件保存策略

返回默认的文件储存路径(只是把默认的文件名重命名为加上Alamofire_前缀, 文件还是在缓存目录, 会被系统删除, 如果要保存文件, 需要转移到其他目录)

四,refreshToken,使用请求拦截器,RequestAdapter请求适配器与RequestRetrier请求重试器(https://www.jianshu.com/p/dde5ff22b681)实现方法

你可能感兴趣的:(第一节)