私はMoyaとRxSwift拡張機能を使用しているプロジェクトを持っています。 シンプルなユースケースは正常に動作しますが、リクエストを行い、Observablesの形式でレスポンスを得ることができます。RxSwiftとMoyaによる再認証の処理
public func test() -> Observable<Response> {
return provider
.request(.test)
.retry(5)
}
私は観察可能なものを購読し、問題なく応答を印刷することができます。
今は認証ロジックを処理する必要があります。それが動作する方法は、上記の要求をHTTPヘッダーフィールドとして追加されたトークンで実行することです。 Moyaは、endpointByAddingHTTPHeaderFieldsをendpointClosureに使用することで、透過的に私にそれを許可します。これまでのところ問題ありません。要求が
provider.request(.auth(user, pass)).retry(5)
これは私が簡単に新しいを取得するためにJSONにマッピングすることができるという別の観測を返し、私は別のエンドポイントを呼び出して再認証する必要があることを意味HTTPステータス401で失敗したとき
問題が発生しますトークン。
私は()に再度電話する必要があります!
は、だから私の質問は、観察可能ではすでに再実行していることが保証される)テスト(で返されるようにがどのように私は、上記テストの内側()機能をこの認証ロジックを追加することができます...です失敗した場合の認証ロジックであり、第2の再認証された要求の結果である。
私は一般的にRXSwiftとRXの新機能ですから、これを行うために使用する演算子については少しわかりません。
ありがとうございます!
これを解決しましたか? – tskulbru
401はエラーとして処理されますか、それとも有効な応答オブジェクトですか? –
前者の場合は、この回答が役に立ちます:http://stackoverflow.com/questions/35841054/rxswift-user-input-on-error-andcontinuation/38341690#38341690 –