rxでAPIREST呼び出しを行うためにretrofit2を使用する場合、単一または監視可能のどちらを使用するのが最善のアプローチですか?
public interface ApiService{
Single<Data> getDataFromServer();
Observable<Data> getDataFromServer();
}
データフローをより正確に表現するため、Single
を使用することをお勧めします。サーバーにリクエストを送信すると、データが1回放出されます[〜 #〜]または[〜#〜]エラー:
Single: onSubscribe (onSuccess | onError)?
Observable
の場合、理論的にはデータのいくつかの放出[〜#〜]および[〜#〜]エラーが発生する可能性があります
Observable: onSubscribe onNext? (onCompleted | onError)?
ただし、 rx-Java2 を使用している場合は、Maybe
の代わりに Single
を使用することをお勧めします。これら2つの違いは、Maybe
は、サーバーから応答を受け取ったが本文が含まれていない場合も処理することです。
Maybe: onSubscribe (onSuccess | onCompleted | onError)?
Observable
とSingle
の違いはかなり意味論的です。何かSingle
を宣言するとき、このオブザーバブルは一連の値ではなく、1つの値のみを生成すると言っています。
適切なセマンティックタイプを使用することは、APIを文書化するための最良の方法です。