我在实现基于 Alamofire 的网络时发生了奇怪的事情。所以,我的后端可以返回给我 409,当我得到它时,我想做出正确的 react ,所以我选择了一个常规的解决方案:

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 ,但是这个解释并不能说服我😅

最佳答案

HTTP 4.xx 类状态代码用于客户端似乎出错的情况,因此在正常情况下,当服务器生成错误消息时,您将向用户显示某种错误消息。

在 Alamofire 世界中,如果您希望响应在具有 Not Acceptable 状态代码时生成错误,则可以使用 .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...
  }
}

关于ios - 409 在 Alamofire 中成功了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38950210/

10-12 05:17