当我们使用retrofit2与Rx进行API休息调用时,使用的最佳方法是Single还是Observable?
public interface ApiService{
Single<Data> getDataFromServer();
Observable<Data> getDataFromServer();
}
答案 0 :(得分:16)
我建议使用Single
,因为它更准确地表示数据流:您向服务器发出请求,并且您获得一次数据 OR 错误:
Single: onSubscribe (onSuccess | onError)?
对于Observable
,您理论上可以获得多次数据排放 AND 错误
Observable: onSubscribe onNext? (onCompleted | onError)?
但是,如果您使用rx-java2,我建议使用Maybe
代替Single
。这两者之间的区别在于Maybe
处理从服务器获得响应但不包含正文的情况。
Maybe: onSubscribe (onSuccess | onCompleted | onError)?
答案 1 :(得分:6)
Observable
和Single
之间的区别是相当语义的。当你宣布某事Single
时,你说这个可观测量只会产生一个值而不是一系列值。
使用适当的语义类型是记录API的最佳方式。