2017-09-04 6 views

答えて

0

「リダイレクト」とは「HTTPの成功をシエスタのエラーに変換する」という意味で「はい」です。パイプラインは、任意に成功をエラーに変換することができ、その逆も可能です。 ケースを展開するResponseTransformerを書き、エラーフラグが設定されているかどうかをチェックし、エラーフラグが設定されているかどうかを確認します(そうであれば)。.failureを新しく返します。

例えば、ここで200にX-My-API-Errorヘッダをチェックトランスのスケッチであり、それはエラー本戻りある場合:

service.configure { 
    $0.pipeline[.cleanup].add(APIErrorHandler()) 
} 
次のよう

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 
    } 
    } 
} 

は、それを構成します

例のプロジェクトの変圧器を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