RxMoya 网络请求 上传图片 与请求前 请求后监听

公司要求用swift重构项目,所以决定项目全部用新的框架来写,RxSwift,RxMoya,SwiftJson,Rxcocoa等框架 当然第一次用RxSwift卡了好几天把脑子炸了 ,然后想通了,在做图片上传的时候因为用的RxMoya 网上资料太少 后来去看了demo 然后想想还是写下,还有监听网络请求前 和请求后的因为要做提示控件。网上大部分都是老代码,复制了不走,去看了版本更新才知道方法换了。
mvvm
看下要创建的两个文件

Paste_Image.png

第一步


C1F7A3C1-5DC9-4516-A7FF-BCF3B2E95612.png

没写的就是放路径啦。
也许有人会问总不能多个请求地址放多个地方吧。我是几个大模块各创建一个 ,我写app比较考虑后期维护性,没办法这个项目也是2个月内让完成签了生死状。可能讲的不是太全,还请见谅

Paste_Image.png
Paste_Image.png

这个就是请求前与请求后你要做什么处理

Paste_Image.png

放下源码 如果复制发现没有用请看下版本更新

internal final class AccessTokenPlugin: PluginType {
    func willSend(_ request: RequestType, target: TargetType) {
        
    }
    
    func didReceive(_ result: Result, target: TargetType) {
        
    }
    
let HomeApiServi = RxMoyaProvider<HomeApiServicea>(plugins: [AccessTokenPlugin()])
public enum HomeApiServicea {
    case getHome(city:String)

    
}
extension HomeApiServicea: TargetType {
    public var baseURL: URL {
        return URL(string: URL_DEVELOP)!
    }
    
    public var path: String {
        switch self {
        case .getHome:
            return URL_HOME
       
        }
    }
    
    public var method: Moya.Method {
        switch self {
        case .getHome:
            return .get
      
            
        }
    }
    
    public var parameters: [String : Any]?
    {
        switch self {
        case .getHome(let cityname):
            return ["cityName":cityname]
        }
    }
    
    public var parameterEncoding: ParameterEncoding {
        switch self {
        case .getHome:
            return URLEncoding.default
      
        }
    }
    
    public var task: Task {
        switch self {
        case .getHome:
            return .request
   
        }
    }
    
    public var sampleData: Data {
        switch self {
        case .getHome:
            return "".data(using: String.Encoding.utf8)!

        }
    }
}

下面介绍上传图片 图片上传肯定用post这个就不用多去想了。下面放更改的截图和源码

Paste_Image.png
      case let . PictureSave(_,Data):
            return .upload(.multipart([MultipartFormData(provider: .data(Data), name: "files",fileName: "pic.jpeg", mimeType: "image/jpeg")]))

还是把viewmodel的也放下 防止有些人不会用

class HomePageViewModel{
    func MyCenter(city:String) ->Observable<Response>
    {
        return HomeApiServi.request(.getHome(city: city)).asObservable()
    }
}

个人github https://github.com/sujie0308 2017.6.25 抽出来放下源码吧 因为996 就星期天放吧
有问题加我qq819950208 。Demo:https://github.com/sujie0308/RxMoya

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,862评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,188评论 4 61
  • 我想睡上一千年 做一个来去自如的梦 轻飘飘的 没有寂寞 没有忧愁 不再期许 也不去坚守 睡得足够足够 不再于轮回里...
    简书余木阅读 309评论 5 3
  • 早先,兰田土地贫脊,靠天吃饭,收成不好,常年闹饥荒。孩子成年后就被打发出去谋生。有一姓魏的后生,因当厨师吃能饱饭,...
    SDBridge阅读 500评论 0 0
  • 在很久之前我就看过人在囧途这部电影了,我想当时我肯定也是在那些地方笑了,我们会发现即使过了很多年,我们的笑点,泪点...
    斯文李校长阅读 236评论 0 0