kLike / ZhiHu-RxSwift

知乎日报 with RxSwift
371 stars 72 forks source link

问个问题 #6

Open CoderBQ opened 5 years ago

CoderBQ commented 5 years ago

rxswift 和moya 结合起来的网络请求是不是需要封装一层一个公用的 如果不封装有个问题 怎么拦截code码 比如返回code= 1001代表重新登录

vitotse commented 5 years ago

moya提供了plugins可以处理请求前和返回后的数据

CoderBQ commented 5 years ago
   provider.rx
        .request(.getMoreNews(newsDate))
        .mapModel(listModel.self)
        .subscribe(onSuccess: { (model) in
            self.dataArr.value.append(SectionModel(model: model.date!, items: model.stories))
            self.newsDate = model.date!
        })
        .disposed(by: dispose)

我的意思是这种网络请求是不是要封装起来呢 比如返回了code= 800 代表用户未登录 我要跳转到登录页面 我可以在这个block里面写 可是还有其他网络请求也会返回code=800 啊

vitotse commented 5 years ago

@CoderBQ 我也遇到类似的需求。我是封装了一层,数据处理moya的plugins先过滤一遍。例如,code=200就转对象输出,其他code转到了error输出。 另外插件可以抽象出来,按情况使用。 https://github.com/Moya/Moya/blob/master/docs_CN/Examples/CustomPlugin.md

CoderBQ commented 5 years ago

想问下 这种网络封装你们有用在正式项目中吗