我正在使用Alamofire。因此在响应中有状态代码。我应该检查并处理每个可用的状态代码案例或我应该怎样处理这些。
switch response.response?.statusCode {
case 201:
print("created user")
case 400:
print("Bad request")
// ...........
default:
print(response.result.value)
}
实际上不需要检查每个状态代码。我通常会做的是使用下面的模板检查请求是成功还是失败。
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
}
}
您可以检查响应代码是否在200-299之间。这会告诉你请求是成功的。任何其他代码都是失败的。
如果要显示特定错误,请使用响应代码。这是标准的response codes列表。如果您可以控制API,请坚持使用标准代码。
请参阅以下内容以获取HTTPURLResponse
的状态代码,希望对您有所帮助。
if let httpResponse = response as? HTTPURLResponse {
print("error \(httpResponse.statusCode)")
if httpResponse.statusCode == 200{
//Success
}else{
//Failed
}
}else {
//Failed
}
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
}
您可以检查错误类型
您通常不需要实际知道特定的错误代码,只需要知道请求是否成功。但我可以看到一个开发人员工具或类似的东西,你可能想要显示实际的代码。
这样的事情会很好,并不需要检查每个可能的状态代码的情况。
if let httpResponse = response as? HTTPURLResponse {
print("error \(httpResponse.statusCode)")
if httpResponse.statusCode == 200{
//Success
}else{
//Failed
statusCodeLabel.text = httpResponse.statusCode
}
}else {
//Failed
}