0
私はRxJavaを学んでいます。私は2つのAPIから映画情報を取得しています。RxJavaで観測可能なものを結合するより良い方法がありますか?
- 第1のAPI(
Api1
クラス)id
を受信し、JSON(Api1Dto
クラス)を返し:
{ id : "123456", title : "Top Secret", api2Id : "7787" }
- を第2のAPI(
Api2
クラス)api2id
戻るを受信しますJSON(Api2Dto
クラス):
{api2Id : "58582", "director" : "Peter Jackson" }
私はすべてのこれらのフィールド(Film
クラス)で構造を構成する、id
から、欲しい:
{ id: "123456", title : "Muahaha", api2Id : "5552", director : "Uncle Joe" }
私はこのコードを持っている:
public Observable<Film> getById(final String id) {
return api1.getById(id).map(new Func1<Api1Dto, Film>() {
@Override
public Film call(Api1Dto dto1) {
Film film = new Film();
film.id = dto1.id;
film.title = dto1.title;
film.api2Id = dto1.api2Id;
return film;
}
}).flatMap(new Func1<Film, Observable<Film>>() {
@Override
public Observable<Film> call(final Film film) {
return api2.getById(film.api2Id).map(new Func1<Api2Dto, Film>() {
@Override
public Film call(Api2Dto dto2) {
film.director = dto2.director;
return film;
}
});
}
});
}
をそれは動作しますが、これが正しい方法か、RxJavaが提供する機能を使って、より洗練された、より洗練されたソリューションが存在するのだろうかと思います。