基于Alamofire
实施网络时,发生了奇怪的事情。所以,我的后端可以返回409
,当我得到它时,我想做出正确的反应,所以我选择常规解决方案:
Alamofire.request(someRequest).responseJSON { response in
switch response.result {
case .Success(let value):
// I get 409 here...
if response.response?.statusCode == 409 {
// ...
}
case .Failure(let error):
// While it should be here...
}
}
为什么会这样?是某种后端问题还是什么?我只能做一个解释:请求已完成,即使你有.Success
它也是409
,但这个解释并没有说服我
答案 0 :(得分:3)
HTTP 4.xx 类状态代码适用于客户端似乎有错误的情况,因此在正常情况下,您将向用户显示某种错误消息由服务器生成。
在Alamofire世界中,如果您希望响应生成错误(如果它具有不可接受的状态代码),则可以使用.validate()
方法:
Alamofire.request(someRequest)
.validate(statusCode: 200..<300)
.responseJSON { response in
switch response.result {
case .Success(let value):
...
case .Failure(let error):
// You'll handle HTTP 409 error here...
}
}