シエスタ・パイプラインを使用して成功応答を受信し、それを解析し、リターンに応じて障害応答にリダイレクトできますか?スウィフト・シエスタは障害への応答をリダイレクトします
サーバーの応答が何度もHTTP 200を返しますが、エラーメッセージ/フラグが返されます。
シエスタ・パイプラインを使用して成功応答を受信し、それを解析し、リターンに応じて障害応答にリダイレクトできますか?スウィフト・シエスタは障害への応答をリダイレクトします
サーバーの応答が何度もHTTP 200を返しますが、エラーメッセージ/フラグが返されます。
「リダイレクト」とは「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という名前の変圧器を検討すると便利です。
恐ろしい!ありがとうポール! – user2921672