2017-10-19 11 views
1

私は本当に奇妙な(そして厄介な)APIを手にしていません。残念ながら、無効なリクエストが行われた場合、4xxステータスで応答するのではなく、 200のステータスを返します。エラーとして成功siestaレスポンスをマーク

このレスポンスでは、レスポンスボディも通常のXMLレスポンスからプレーンテキストに変更されますが、コンテンツタイプヘッダーは変更されません。あなたはこれがいかに迷惑であるか想像することができます!

私はシエスタとAPIを使って作業していますが、それは実際にはほんのわずかしかRESTfulではありませんが、次の部分をどのように動作させるのかは不明です。

技術的に有効で成功した200応答をエラー応答に変換するにはどうすればよいですか?今、私は次のセットアップを持っている:

bad api request: invalid api key 

:応答が実際にしかし応答が誤りであるシナリオでは、私は次のことを受け取る、XMLであるとき

configure("/endpoint") { 
    $0.mutateRequests { req in 
    ... perform some mutation to request ... 
    } 
    $0.pipeline[.parsing].add(self.XMLTransformer) 
} 

configureTransformer("/endpoint") { 
    ($0.content as APIResponse) 
    .data() 
    .map(Resource.init) 
} 

これがうまく働いていますまたはこれに類似したもの。 XMLParserクラスはすでにこれを処理していますが、エラーを起こしたとマークすることはできますが、エラーがあることをシエスタに認識させる方法と、トランスフォーマを呼び出さず、代わりにリクエストを失敗としてマークする方法はわかりません私は他の場所でエラーを処理することができます。

私は後に何を達成できますか?

答えて

0

configureTransformerは、フル機能の(ただし、より冗長な)任意のトランスのシエスタのパイプラインサポートの場合はjust a common-case shortcutです。完全な変圧器は、任意のの応答を成功→失敗と失敗→成功と任意に変換することができます。 user guide discusses thisビット。

あなたはコンテンツfalse成功に404 失敗を回して、あなたが望むものに非常によく似た何かをする顧客の変圧器を持っているサンプルプロジェクトでこの動作を確認することができます。 configured heredefined hereです。この例では、失敗→成功の変換が行われますが、成功のためにコードを適合させる必要があります。→失敗の目的。

+0

ありがとうございました!私はそれを働かせることができたと思う:D – PaReeOhNos

関連する問題