如何使用RxJava为改装API创建包装器



我有两个API,即API 1和API 2。API 1获取身份验证令牌,API 2获取用户配置文件信息。我需要从ViewModel中点击API 2,但如果API 2给出身份验证错误,则我需要首先获取新令牌,然后点击API 2(用户信息(

目前,我对所有API都使用RxJava Single和Reform,但对一个接一个的API除外。有很多API都使用身份验证令牌,如果它在任何API中过期,那么我需要调用身份验证API并再次获取令牌,然后使用新的身份验证令牌调用API。

设计包装器的最佳方式应该是什么,以便它可以与所有具有代码可重用性的API一起使用。

提前谢谢。

我有一些想法。如果您有获取API响应的基本模型,那么您可以为响应代码创建自定义getter,并检查token_expired中的响应代码。

这是我从API得到的样本响应。

{ 
response_code: "200",
response_msg: "",
result: ...
}

这是我的基本模型。

class BaseModel<T> {
@SerializedName("response_code")
var response_code: Int? = null
get() {
if(field == ErrorStatusCode.TOKEN_EXPIRE) {
ErrorCodeHandler.requestNewToken()
}
return field
},
@SerializedName("response_msg")
var response_msg: String? = null
@SerializedName("result")
var data: T? = null
}

因此,每当令牌到期时,我都会通过调用ErrorCodeHandler.requestNewToken()来请求Net令牌

但如果您想回忆一下发现令牌超时的API,我也不知道该怎么办。

PS。希望得到帮助。

最新更新