Получение данных ответа из ошибки Alamofire
я использовал Alamofire в одном из моих проектов iOS, но недавно при обновлении до Alamofire 3.0 формат немного изменился для возврата результатов. В моем случае я хочу вызвать API входа в систему и вернуть результат. Есть несколько ошибок, которые могут произойти, поэтому я всегда возвращаю результат API, в чем проблема, поэтому я хотел бы, чтобы мой код вошел в блок сбоя, если ответ 400, а затем включить сообщение из моего API как часть ошибки, но я не могу так получить данные ответа из запроса, когда результатом является сбой.
вот мой код:
Alamofire.request(
method,
Constants.baseURL + route,
parameters: fullParameters)
.validate()
.responseJSON { response in
let json = JSON(response.result.value!)
switch response.result {
case .Success:
completion?(json["data"])
case .Failure(let errorData):
failure?(errorData, json["errmsg"])
}
}
то, что происходит в этом, заключается в том, что когда ответ является неудачей, он ломается, потому что ответ.результат.значение равно нулю, но я хотел бы, чтобы это был JSON, возвращенный из API, несмотря ни на что. С другой стороны, когда ответ успешен, он работает отлично.
1 ответов
раз уж ты звонишь validate()
Alamofire автоматически проверяет код состояния из 200...299
.
если вы не хотите Alamofire, чтобы проверить код состояния, но вы хотите сделать это вручную, у вас есть два варианта:
- удалить
.validate()
и делать все вручную. - изменить
validate()
до.validate(statusCode: yourRange)
для диапазона, который вы хотите разрешить и обработать их вручную.
Подробнее здесь.