如何在 Alamofire 中全局处理错误?

问题描述 投票:0回答:1

我有一个 api,其中用户角色可以过期,此时每个请求都将返回 410 错误代码。

我想要一个全局处理程序来重置一些数据,提示 UI 重置等

什么最适合挂接到 Alamofire? 目前我有一个

RequestInterceptor
并覆盖它的
retry
我检查错误为

if let error = error as? AFError, case 
   .responseValidationFailed(.unacceptableStatusCode(410)) = error {

但是,

retry
被调用了两次,这对我的情况不利。

responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 410))
responseValidationFailed(reason: Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 410))

除了在“更高级别”上手动处理之外,我还可以使用其他钩子吗?拦截器似乎非常适合

ios alamofire
1个回答
0
投票

最简单的方法是简单地挂接到您的响应处理程序或异步请求。在任何复杂性的任何 API 中,您都希望将您的 Alamofire 使用包装在一个方便的层中,该层配置您需要的内容。不管你怎么做,你都可以看到错误流过。

func request(..., completion: (AFDataResponse<T>) -> Void) {
  session...
    .responseDecodable(of: T.self) { response in
      // Perform global behavior.
      completion(response)
    }
}

func request(...) async -> AFDataResponse<T> {
  let response = await session...
    .serializingDecodable(T.self)
  // Global error handling
  return response
}
© www.soinside.com 2019 - 2024. All rights reserved.