如何最好地修改Alamofire上的-validate方法的错误消息

时间:2015-10-30 00:08:55

标签: alamofire

我有一个小的片段,它向登录端点发出请求并且工作正常。

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验证func片段以供参考:

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 个答案:

答案 0 :(得分:3)

最简单的方法是在错误到达您的应用代码后采取行动。您可能不想创建一个自定义validate方法来覆盖默认的Alamofire行为,因为您的案例非常具体。

通常,您可以设置可接受的状态代码并使用validate(statusCodes:)方法。然后,在应用代码的response逻辑中,启用错误并为每个案例创建自定义应用代表。在这种情况下,403表示使用了只有您的应用程序知道的错误凭据。因此,它应该存在于您的应用代码中,而不是Alamofire validation扩展中。我的两分钱......