我需要通过将多个改造 API 调用链接在一起来创建一个 observable。
我有 2 个服务:ItemService,它只包含项目名称和 id,以及 ItemDetailsService,它包含有关项目的许多其他详细信息,如描述图像等。我正在使用 Retrofit 2 + RxJava + Dagger 2。
项目服务:
@GET("apione/items")
Observable<List<Items>> getItems();
Run Code Online (Sandbox Code Playgroud)
ItemDetailsService:
@GET("apitwo/item/{id}")
Observable<ItemDetail> getItemDetails(@Path("id") int id);
Run Code Online (Sandbox Code Playgroud)
项目 json:
[
{
"id": 1,
"name": "one"
},
{
"id": 2,
"name": "two"
},
{
"id": 3,
"name": "three"
}
]
Run Code Online (Sandbox Code Playgroud)
用于具体项目 ID 的 ItemDetails json:
{
"id": 1,
"image_url": "http://.../1.png",
"description": "description of item one",
"category": "cat_1",
"quantity" 10
}
Run Code Online (Sandbox Code Playgroud)
此外,这 2 个 API 具有不同的基本 URL。那么如何制作一个 Observable 返回带有图像、数量和类别的项目列表呢?
更新
我卡在这里了。这是我的ItemPresenter
public …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我使用Retrofit并尝试使用Dagger注入依赖项.我还有2个不同API的Retrofit服务.我需要同时使用2个不同的API和不同的baseUrls.我坚持到这里,不知道接下来该做什么.
我的ApplicationModule:
@Module
public class ApplicationModule {
private String FIRST_API_URL = "https://first-api.com";
private String SECOND_API_URL = "https://second-api.com";
private String mBaseUrl;
private Context mContext;
public ApplicationModule(Context context) {
mContext = context;
}
@Singleton
@Provides
GsonConverterFactory provideGsonConverterFactory() {
return GsonConverterFactory.create();
}
@Singleton
@Provides
@Named("ok-1")
OkHttpClient provideOkHttpClient1() {
return new OkHttpClient.Builder()
.connectTimeout(20, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS)
.build();
}
@Singleton
@Provides
@Named("ok-2")
OkHttpClient provideOkHttpClient2() {
return new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.build();
}
@Singleton
@Provides
RxJavaCallAdapterFactory provideRxJavaCallAdapterFactory() {
return RxJavaCallAdapterFactory.create();
}
@Singleton
@Provides
@FirstApi …Run Code Online (Sandbox Code Playgroud) 我正在使用节点js + sequelize。我想按供应商,价格,交货选项等选定的选项来过滤产品的结果,但我不明白如何精确查询。
现在我正在执行此操作,但是此方法仅在选择所有过滤器(AND运算符)时才有效。如果用户仅选择1个过滤器,或选择几个过滤器,该怎么办?
let vendor = req.query.vendor;
let priceFrom = req.query.priceFrom;
let priceTo = req.query.priceTo;
let delivery = req.query.delivery
Product.findAll({
where: {
vendor_id: {
in: vendor
},
price: {
$between: [priceFrom, priceTo]
},
{
delivery: delivery
}
}
}).then(products => {
res.render('product', {products: products});
console.log(products)
});
Run Code Online (Sandbox Code Playgroud)
我看到现在只有一种方法可以使这种方法在每种情况下编写很多if-else语句。