包装服务器响应然后进行处理的方法是什么?API以以下格式返回响应:
成功:
{
"data": [],
"statusCode": 200,
"statusMessage": "Operation success",
"success": true
}
故障:
{
"errors": [],
"statusCode": 500,
"statusMessage": "Something went wrong",
"success": false
}
我正在尝试将Clean Architecture原则应用于我的应用程序,我想知道如何包装响应以更好地处理错误?
- fillCities((调用getCities(
- getCities((调用getCityList((
-
getCities通过funcErrorCheckAndTransform处理来自getCityList端点的响应,并返回一个可观察到的呈现层
fun <T> funcErrorCheckAndTransform(): (BaseResponse<T>) -> Observable<T> { return { response -> if (response.isSuccess) { Observable.just(response.data) } else { val e = Exception(response.errorMsg) Timber.e(e) Observable.error(e) } } } override fun getCities(): Observable<out Cities> { return locationService.getCityList() .subscribeOn(schedulerProvider.io()) .flatMap(funcErrorCheckAndTransform()) .observeOn(schedulerProvider.ui()) } @GET("getcitylist") fun getCityList(): Observable<BaseResponse<ProfileResponse.Cities>> override fun fillCities(defaultCityName: String?) { view.showProgress(R.string.cities_are_getting_dialog_message) compositeDisposable.add( interactor.getCities().subscribe( { view.hideProgress() view.fetchCities(it, defaultCityName) }, { error -> view.onError(error) } )) }