KingPanda
KingPanda介绍
KingPanda基于Alamofire三方库进行封装,依赖ObjectMapper
KingPanda安装
通过CocoaPods安装, 在Podfile里添加如下代码:
KingPanda使用
配置网络请求的BaseUrl
在Appdelegate里导入KingPanda模块,并配置baseUrl,如下:
import KingPanda
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//配置URL
NetworkConfig.shared.baseUrl = "https://www.baidu.com"
return true
}
}
新建swift文件,创建类名,导入KingPanda, 并继承KingPanda和增加初始化方法,如:
import Watermelon
Class TestApi: KingPanda {
override init() {
super.init()
configInfo = self
}
}
配置请求所需参数
实现网络配置协议
extension HomeApi: NetworkConfigInfo {
//该类型为请求成功后返回的数据类型,.model表示返回的是自定义model类型
var responseType: ResponseType? {
return .model
}
var method: HttpMethod? {
return .POST
}
var baseUrl: String? {
return NetworkConfig.shared.baseUrl
}
var pathUrl: String? {
return "/init.do"
}
var customRequestUrl: String? {
return nil
}
var requestParams: [String : Any]? {
return nil
}
var httpHeader: [String : String]? {
return nil
}
}
配置自定义Model
import ObjectMapper
class TestModel: Mappable {
var code: Int?
var data: [TestDataModel]?
var ts: Double?
init() {}
required init?(map: Map) {
}
func mapping(map: Map) {
code <- map["code"]
data <- map["data"]
ts <- map["ts"]
}
}
class TestDataModel: Mappable {
......
}
网络请求
返回model的请求
let apiManager = TestApi()
apiManager?.requestSuccessed = { (result) in
}
apiManager?.requestFailed = { (result) in
}
apiManage?.start(withModel: TestModel())
返回Json的请求有两种:
第一种方式为:
let apiManager = TestApi()
apiManager.delegate = self
apiManager.start()
extension HomeViewModel: ResponseProtocol {
public func requestSuccess(_ result: BaseRequest) {
//请求成功
}
public func requestFailure(_ result: BaseRequest) {
//请求失败
}
}
第二种方式为:
let apiManager = TestApi()
apiManage?.startRequestWithClosure(successed: { (result) in
//请求成功
}, failed: { (resule) in
//请求成功
})