如何最好地修改来自 Alamofire 上的 -validate 方法的错误消息
Posted
技术标签:
【中文标题】如何最好地修改来自 Alamofire 上的 -validate 方法的错误消息【英文标题】:How to best modify error messages from -validate method on Alamofire 【发布时间】:2015-10-30 00:08:55 【问题描述】:我有一个小 sn-p,它向登录端点发出请求,它工作正常。
public func loginWithEmail(email: String, password: String, completionHandler: Result<String, NSError> -> Void)
Alamofire.request(AuthenticationRouter.Login(email: email, password: password))
.validate()
.responseString response in
completionHandler(response.result)
我的问题是:当用户输入无效凭据时,服务器返回 403,由于 validate
将生成 Result<NSError>
。修改此错误中的错误描述/失败原因的最佳方法是什么?
我应该创建自己的错误吗?有没有办法为所有请求修改它?
Alamofire validate func sn-p 供参考:
public func validate<S: SequenceType where S.Generator.Element == Int>(statusCode acceptableStatusCode: S) -> Self
return validate _, response in
if acceptableStatusCode.contains(response.statusCode)
return .Success
else
let failureReason = "Response status code was unacceptable: \(response.statusCode)"
return .Failure(Error.errorWithCode(.StatusCodeValidationFailed, failureReason: failureReason))
【问题讨论】:
【参考方案1】:最简单的方法是在错误到达您的应用代码后对其采取行动。您可能不想创建覆盖默认 Alamofire 行为的自定义 validate
方法,因为您的案例非常具体。
通常,您会设置可接受的状态代码并使用validate(statusCodes:)
方法。然后在您的应用程序代码中的response
逻辑中,打开错误并为每种情况创建自定义应用程序表示。在这种情况下,403 表示使用了错误的凭据,只有您的应用程序知道。因此,它应该存在于您的应用程序代码中,而不是 Alamofire validation
扩展中。我的两分钱...
【讨论】:
以上是关于如何最好地修改来自 Alamofire 上的 -validate 方法的错误消息的主要内容,如果未能解决你的问题,请参考以下文章
来自 App Engine 的 Google Cloud SQL 的连接限制是啥,以及如何最好地重用数据库连接?
如何在 Relay Modern 的父组件中最好地访问来自 QueryRenderer 的数据?
如何使用来自 Alamofire 发布请求的 SwiftyJSON 填充下拉列表?
如何检查网络响应来自 Alamofire 请求中的缓存或服务器?