【发布时间】:2018-03-27 13:26:22
【问题描述】:
我有一个带有登录页面的项目。在这个页面上,用户点击“登录”后,我需要向 checkUserName 发送请求(检查我们是否有这样的用户并且他可以登录)然后才进行身份验证。
在代码中我有这个:
界面:
@POST("endpoint")
Flowable<AccountResponse> auth(@Body AuthRequestBody authRequestBody);
@POST("endpoint")
Flowable<CheckUsernameResponse> checkUserName(@Body CheckUserNameRequest checkUserNameRequest);
休息服务:
public Flowable<AccountResponse> auth(String login, String password) {
return api.auth(new AuthRequestBody(login, password)).compose(handleError());
}
public Flowable<CheckUsernameResponse> checkUserName(String login) {
return api.checkUserName(new CheckUserNameRequest(login)).compose(handleError());
}
和 Rx:
public Flowable<AccountResponse> auth(String login, String password) {
return checkUsername(login).flatMap(checkUsernameResponse -> restService.auth(login, password))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(loginResponse -> {
tokenManager.saveToken(loginResponse.getToken());
});
}
public Flowable<CheckUsernameResponse> checkUsername(String login) {
return restService.checkUserName(login)
.subscribeOn(Schedulers.io());
}
如果第一次查询正常,我如何检查 Rx? (检查用户名)。我的意思是,那个 API 没有返回错误消息,UserId 没问题, isAccessGranted 是真的,然后才向身份验证发送第二个请求?
【问题讨论】: