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

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

RxMoya 网络请求 上传图片 与请求前 请求后监听_第1张图片
Paste_Image.png

第一步


RxMoya 网络请求 上传图片 与请求前 请求后监听_第2张图片
C1F7A3C1-5DC9-4516-A7FF-BCF3B2E95612.png

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

RxMoya 网络请求 上传图片 与请求前 请求后监听_第3张图片
Paste_Image.png
RxMoya 网络请求 上传图片 与请求前 请求后监听_第4张图片
Paste_Image.png

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

RxMoya 网络请求 上传图片 与请求前 请求后监听_第5张图片
Paste_Image.png

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

internal final class AccessTokenPlugin: PluginType {
    func willSend(_ request: RequestType, target: TargetType) {
        
    }
    
    func didReceive(_ result: Result, target: TargetType) {
        
    }
    
let HomeApiServi = RxMoyaProvider(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
    {
        return HomeApiServi.request(.getHome(city: city)).asObservable()
    }
}

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

你可能感兴趣的:(RxMoya 网络请求 上传图片 与请求前 请求后监听)