Как обрабатывать коды состояния HTTP? - PullRequest
1 голос
/ 30 апреля 2019

Я использую Alamofire.Поэтому в ответе есть коды состояния.Должен ли я проверять и обрабатывать каждый доступный случай кода состояния или что я должен делать для их обработки.

switch response.response?.statusCode {
                case 201:
                    print("created user")
                case 400:
                    print("Bad request")

                // ...........
                default:
                    print(response.result.value)
}

Ответы [ 5 ]

0 голосов
/ 30 апреля 2019

Обычно вам не нужно знать конкретный код ошибки, просто, был ли запрос успешным или нет.Но я мог бы увидеть инструмент разработчика или что-то подобное, вы можете показать реальный код.

Что-то вроде этого было бы хорошо, в действительности нет необходимости проверять регистр каждого возможного кода состояния.

if let httpResponse = response as? HTTPURLResponse {
  print("error \(httpResponse.statusCode)")
  if httpResponse.statusCode == 200{
    //Success
  }else{
    //Failed
    statusCodeLabel.text = httpResponse.statusCode 
  }
}else {
  //Failed
}
0 голосов
/ 30 апреля 2019

См. Следующий пункт, чтобы получить код состояния от HTTPURLResponse, надеюсь, он вам поможет.

if let httpResponse = response as? HTTPURLResponse {
     print("error \(httpResponse.statusCode)")
     if httpResponse.statusCode == 200{
         //Success
     }else{
         //Failed
     }
}else {
     //Failed
}
0 голосов
/ 30 апреля 2019

Вы можете проверить код ответа от 200 до 299 включительно.Это скажет вам, что запрос был успешным.Любой другой код - сбой.

Если вы хотите показать конкретные ошибки, используйте коды ответов.Это список стандартных кодов ответов .Если у вас есть контроль над API, придерживайтесь стандартных кодов.

0 голосов
/ 30 апреля 2019
    httpResponse = response as! HTTPURLResponse
    print(httpResponse.statusCode) // this will shown the status code so you can easily get which type of error code is generate

    if(httpResponse.statusCode == 200)
    {
        //Success
    } 
    else
    {
        //Failure
    }

Вы можете проверить типы ошибок

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

0 голосов
/ 30 апреля 2019

Нет необходимости проверять каждый код состояния.Обычно я проверяю, успешен ли запрос или нет, с помощью шаблона ниже.

Alamofire.request(request).responseJSON { (response) in

    switch response.result {
    case .success:
        if let httpURLResponse = response.response {
            if httpURLResponse.statusCode == 200 {
                // Success
            } else {
                // Response Unsuccessful
            }
        } else {
            // Response Unsuccessful
        }
    case .failure:
        // Request Failed
    }

}
...