Alamofire 5响应可解码失败

时间:2019-10-15 11:30:08

标签: swift alamofire

Alamofire具有一个漂亮的.responseDecodable函数,该函数使request.result = .success时的解析变得简单,但是在failure的情况下如何解码错误对象呢?

就我而言,后端可能返回无数错误,因为例如信用卡收费可能具有无限的原因-OTP失败,被拒绝等。

我应该改变处理请求的方式吗?由于Alamofire并不真正支持错误处理(至少使用responseDecodable)。

1 个答案:

答案 0 :(得分:1)

这完全取决于您的回复的结构。有几种方法可以解决此问题:

  • 创建一个enum来代表您的响应,通常与成功(或失败)值有关。类似APIResponse<Success>之类的东西,本身就是Decodable,将尝试解析成功值或响应中的错误。这样一来,您就可以继续使用responseDecodable,但是您必须使用Alamofire自己产生的请求错误来纠正响应错误。
  • 创建自己的ResponseSerializer,知道如何解码成功和失败的值,您可以将其插入Alamofire的response方法。
  • 相关地,您可以使用自定义序列化程序的自定义DataRequest方法扩展response