Moya+ RxSwift+HandyJSON 优雅处理网络请求

前言

在移动端的开发中,网络请求是必不可少的。之前写过Alamofire的简单使用,但是一般开发中都会对这些第三库封装,然后使用,之前自己封装的demo也是借鉴了一些Moya的设计思路。今天就介绍一下Moya一个帮助你处理网络层的第三方框架。

介绍

Moya

Moya是一个帮助我们管理Alamofire的网络管理层,可以让我们去更清晰的去管理我们的网络请求。

Moya的版本 VS Swift版本

这里写图片描述

集成方式

Moya本身支持多种集成,本文使用CocoaPods集成。Moya本身就支持了对RxSwift的扩展,所以我们只需要在Podfile里添加一下:

pod 'Moya', '~> 10.0'

# or 

pod 'Moya/RxSwift', '~> 10.0'

然后执行 pod install
在使用的文件中,引入即可:import Moya

简单使用

定义枚举,存储网络请求

// 1 定义一个枚举,存放我们的网络请求
enum ApiManager {
    case login(username:String,password:String,token:String)

}

实现moya的TargetType协议

extension ApiManager:TargetType{

    var baseURL: URL {
        return URL.init(string: BaseURL)!
    }

    //请求路径
    var path:String{

        switch self {
        case .login(username: _, password:_ , token:_):
            return "login/accountLogin"

        }

    }

    var headers: [String: String]? {
        return nil;
    }
    //请求的参数
    var parameters: [String: Any]? {
        switch self {
        case .login(username: let userName, password: let pwd, token: let token):
            return ["account":userName,"pwd":pwd,"deviceToken":token];

        }

    }

    ///请求方式
    var method: Moya.Method {
        switch self {
        case .login(username: _, password: _, token: _):
        return .post;

        }
    }

    /// The method used for parameter encoding.
    var parameterEncoding: ParameterEncoding {
        return URLEncoding.default
    }

    /// Provides stub data for use in testing.
    var sampleData: Data {
        return "".data(using: String.Encoding.utf8)!
    }

    //MARK:task type
    var task: Task {
       return .requestPlain
    }

    var validate: Bool {
        return false
    }

}

发起网络请求

    let provider = MoyaProvider<ApiManager>();

     provider.request(.login(username: "haha", password: "123456", token: "qwe")) { (result) in
            if result.error == nil{
                LLog(result.value);
            }
        }

RxSwift

RxSwift是一个可以帮助我们简化异步编程的框架,类似于OC的RxCocoa、Java的RXJava、JS的rxjs、kotlin的RxKotlin等,属于Rx家族的一员。学习曲线,相对陡峭。适用于MVVM框架,身边的开发者,对其也是褒贬不一。个人感觉还是一个值得开发者去学习、使用的框架。这边文章就不详细介绍,具体的可移步查看RXSwi

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值