gpt4 book ai didi

android - 使用 MVVM 在 Android 中验证权限的优雅方式

转载 作者:行者123 更新时间:2023-11-29 02:22:25 26 4
gpt4 key购买 nike

因此,我使用带有存储库模式的 MVVM 架构来进行不同的 API 调用。我有一个名为 X 的存储库,其中有不同的相关 API 调用。

在进行任何这些调用之前,我想进行验证。如果成功进行,则只应发出网络请求。

fun getSomethingX(data: Data): Single<Data> {
return if (validation(data)) {
service.getSomethingX()
.onErrorResumeNext(...)
.map { ... ->
...
}
} else {
Single.just(null)
}
}

fun getSomethingY(data: Data): Single<Data> {
return if (validation(data)) {
service.getSomethingX()
.onErrorResumeNext(...)
.map { ... ->
...
}
} else {
Single.just(null)
}
}

如您所见,我可能有许多名为 getSomething..() 的网络请求函数。我将其视为样板代码。

  1. 是否有其他处理验证的方法(不仅是 token 验证,还有一般许可)?如果是这样,你能给我举个例子吗?

  2. 在Repository级别做权限验证可以吗?

  3. 也许更好的方法是在 Interceptor 中进行验证?但如果验证未通过,我没有看到取消请求的简洁方法。

最佳答案

更好的方法是仅在存储库级别进行验证,并尽可能让您的 View 模型保持愚蠢。使用 Kotlin’s Function literals with receiver 非常简单.

在你的仓库中

fun getSomethingX(
data: Data,
onSuccess: (Single<Data>) -> Unit,
onError: (String) -> Unit
) {
if (validation(data)) {
// Do the network call
onSuccess(//pass result)
} else onError(“Invalid data”)
}

在你的 View 模型中

repository.getSomethingX(
data,
onSuccess = {
//it will give you Single<Data>
//Update the value
},
onError = {
//Emit error to view
}
)

关于android - 使用 MVVM 在 Android 中验证权限的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54547781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com