2017-09-04 12 views

답변

0

"리디렉션"은 "HTTP 성공을 낮잠 오류로 변환"한다는 의미입니다. 그렇다면 가능합니다. 파이프 라인은 성공을 오류로 또는 그 반대로 임의로 변환 할 수 있습니다.

.success 케이스를 풀어내는 ResponseTransformer을 작성하고 오류 플래그가 설정되었는지 (그 값이 무엇이든) 확인한 다음 새로 작성한 .failure을 반환합니다. 예를 들어

여기 200에 X-My-API-Error 헤더를 확인하는 변압기의 스케치이며, 본 되돌리고 에러 인 경우

struct APIErrorHandler: ResponseTransformer { 
    func process(_ response: Response) -> Response { 
    switch response { 
     case .success(let entity): 
     if let errorMessage = entity.header(forKey: "X-My-API-Error") { 
      return logTransformation(
      .failure(Error(userMessage: errorMessage, cause: MyAPIError(), entity: entity))) 
     } 
     return response 

     case .failure: 
     return response // no change 
    } 
    } 
} 

구성이 다음과 같이

service.configure { 
    $0.pipeline[.cleanup].add(APIErrorHandler()) 
} 

예제 프로젝트의 변압기는 turn a 404 into a successful response with false for the content이고 그 중 하나는 overrides Siesta’s default error message with a server-provided one입니다.

+0

굉장 !! 폴 감사합니다! – user2921672