Alamofire有一个漂亮的.responseDecodable
函数,可以在request.result = .success
时使解析变得简单,但是,在failure
的情况下如何解码错误对象?
就我而言,后端可能会返回无数错误,因为例如,信用卡收费可能有无限的原因 - OTP 失败、拒绝等。
我应该改变处理请求的方法吗?由于Alamofire并不真正支持错误处理(至少在responseDecodable
的情况下(。
这完全取决于您的回复结构。有几种方法可以解决这个问题:
- 创建一个表示响应的
enum
,通用于成功(也许是失败(值。类似于APIResponse<Success>
,它本身是Decodable
的,并且会尝试解析响应中的成功值或错误。这将允许您继续使用responseDecodable
但您必须自己纠正 Alamofire 生成的请求错误的响应错误。 - 创建你自己的
ResponseSerializer
,知道如何解码成功和失败值,你可以将其与Alamofire的response
方法挂钩。 - 相关地,您可以使用使用自定义序列化程序的自定义
response
方法扩展DataRequest
。