Получение данных ответа из ошибки 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) для диапазона, который вы хотите разрешить и обработать их вручную.

Подробнее здесь.