测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2016年12月 |
SwiftSwift 版本 | 2.3 |
SPM支持 SPM | ✗ |
由 seongbrave 维护。
依赖 | |
RxSwift | ~> 2.6.0 |
RxCocoa | ~> 2.6.0 |
Alamofire | ~> 3.5.0 |
SwiftyJSON | ~> 2.4.0 |
Result | ~> 2.0.0 |
该项目是对 Alamofire 的封装,通过使用 RxSwift 和 SwiftyJSON 可以将一次请求转换成信号,并且可以借助 SwiftyJSONAccelerator 非常方便地转换成 model 对象。
如果是 http
访问,记得在 info.plist
中添加 App Transport Security Settings
设置
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
MikerNetCore.baseUrl = "http://www.baokan.name/e/api"
MikerNetCore.statusKey = "err_code"
// Override point for customization after application launch.
return true
}
import Foundation
import Alamofire
import MikerNetCore
public enum UserApi{
// UserApi
case login(loginName: String, password: String)
case getNewsList
}
extension UserApi: TargetType {
//设置请求路径
public var path: String {
switch self {
case .login:
return "/login.html"
case .getNewsList:
return "/getNewsList.php"
}
}
//设置请求方式 get post等
public var method: Alamofire.Method {
switch self {
case .login:
return .POST
default :
return .GET
}
}
/// 设置请求参数
public var parameters: [String: AnyObject]? {
switch self {
case let .login(loginName, password):
return ["username": loginName, "password": password]
default :
return nil
}
}
}
self.requestBtn.rx_tap.map{ _ in
return UserApi.getNewsList
}.emeRequestApiForJson().subscribeNext{ result in
switch result {
case .Success(let data):
print(data)
case .Failure(let error):
print(error)
}
}.addDisposableTo(disposeBag)
mikerErrorCode 是服务端定义的一个错误状态码,通过返回的 status 状态码,可以转换成对应的 error 返回到界面中来,这样界面中同时可以监控到正确返回的数据和错误时所需的错误信息,方便提示给用户,这块简化了不少,这套网络请求主要还是配合 mvvm 来使用的,这块有个缺点就是返回的数据格式必须是
public class Reg: MikerSwiftJSONAble {
var status: Int!
var data: JSON
required public init?(json:JSON){
self.status = json[MikerNetCore.statusKey].intValue
self.data = json[MikerNetCore.dataKey]
}
}
才可以配合 SwiftyJSONAccelerator 该库方便直接解析成 model 对象
MikerNetCore 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile
pod "MikerNetCore"
seongbrave, [email protected]