2016-06-15 4 views
1

Ich möchte den klassischen Statuscodebereich (2XX) akzeptieren, aber auch einen zusätzlichen Fehlerstatuscode. Also, wie kann ich dies mit der Validierungsmethode von Alamofire Request tun?Akzeptieren Sie mehr als einen Statuscodebereich mit Alamofirie-Anforderung

So etwas:

Alamofire.request(self) 
    .validate(statusCode: [ 200..<300 , 403 ]) 
    .responseJSON { response in 
     switch response.result { 
      case .Success(let JSON): 
       ... 
      case .Failure(let error): 
       ... 
      } 
    }) 

Antwort

1

Alamofire akzeptiert einen Range<Int> Parameter mit akzeptablen Codes. Ein Bereich erfordert, dass alle Elemente fortlaufend sind, also müssen Sie Ihren eigenen Validator programmieren. Dies sollte funktionieren:

extension Request { 
    func validateStatusCode() -> Request { 
     return self.validate { _, response in 
      let acceptableStatusCodes: [Range<Int>] = [200..<300, 403...403] 
      if acceptableStatusCodes.map({$0.contains(response.statusCode)}).reduce(false, combine: {$0 || $1}) { 
       return .Success 
      } else { 
       let failureReason = "Response status code was unacceptable: \(response.statusCode)" 
       return .Failure(Error.errorWithCode(.StatusCodeValidationFailed, failureReason: failureReason)) 
      } 
     } 
    } 
} 

Und nennen Sie es wie folgt:

Alamofire.request(self) 
    .validateStatusCode() 
    .responseJSON { response in 
     switch response.result { 
      case .Success(let JSON): 
       ... 
      case .Failure(let error): 
       ... 
      } 
    }) 

.validate { _, response in 
    let acceptableStatusCodes: [Range<Int>] = [200..<300, 403...403] 
    if acceptableStatusCodes.map({$0.contains(response.statusCode)}).reduce(false, combine: {$0 || $1}) { 
     return .Success 
    } else { 
     let failureReason = "Response status code was unacceptable: \(response.statusCode)" 
     return .Failure(Error.errorWithCode(.StatusCodeValidationFailed, failureReason: failureReason)) 
    } 
} 

Sie können es auch für eine bessere Wiederverwendbarkeit von Code in einer Request Erweiterung erklären

Verwandte Themen