- iOS 9.0+
- Xcode 10.0+
- Swift 5.0+
pod 'WZNetwork', '~> 5.0.0'
- 5.0.0 只支持iOS10开始
- 1.0.0 - 3.x 支持iOS9开始
/// MARK - 账户模块API
enum UserModuleApi {
/// 登录
case login(info: [String: Any])
/// 获取相册
case findalbum
/// 上传用户头像
case upLoadUserAvatar(info: [String: Any], image: Data)
/// 下载配置
case downloadConfig
}
// MARK: - TargetType
extension UserModuleApi: TargetType {
var baseURL: URL {
return URL(string: "http://testapi.myhoney520.com")!
}
var path: String {
switch self {
case .login:
return "/passport/app/login/index"
case .findalbum:
return "/user/app/album/get"
case .upLoadUserAvatar:
return "/user/app/avatar/saveImg"
case .downloadConfig:
return "/center/app/config/getIOS"
}
}
var method: WZMoya.Method {
switch self {
case .login:
return .post
case .findalbum:
return .get
case .upLoadUserAvatar:
return .post
case .downloadConfig:
return .get
}
}
var task: Task {
switch self {
case let .login(info):
return Task.requestParameters(parameters: info, encoding: URLEncoding.methodDependent)
case .findalbum:
return Task.requestPlain
case let .upLoadUserAvatar(info, image):
return Task.uploadCompositeMultipart([MultipartFormData(provider: MultipartFormData.FormDataProvider.data(image), name: "imgfile0", fileName: "20190901213123FromIOS.jpg", mimeType: "image/jpg")], urlParameters: info)
case .downloadConfig:
return Task.requestPlain
}
}
var sampleData: Data {
return "".data(using: String.Encoding.utf8)!
}
var headers: [String : String]? {
return nil
}
}
// MARK: - <#UITableViewDelegate#>
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let requestObject = UserModuleApi.allCases[indexPath.row]
switch indexPath.row {
case 0:
requestObject.request()
.mapModel(UserModel.self)
.subscribe(onNext: { (result) in
debugPrint(result)
Network.Configuration.default.token = result.token
}, onError: { (error) in
debugPrint(error)
}).disposed(by: disposeBag)
case 1:
requestObject.request()
.mapModel([UserPhoto].self)
.subscribe(onNext: { (result) in
debugPrint(result)
}, onError: { (error) in
debugPrint(error)
}).disposed(by: disposeBag)
case 2:
requestObject.request()
.mapResult(String.self)
.subscribe(onNext: { (result) in
debugPrint(result.msg)
}, onError: { (e) in
debugPrint(e)
}).disposed(by: disposeBag)
case 3:
requestObject.request()
.mapModel(BaseConfigInfo.self)
.subscribe(onNext: { (result) in
debugPrint(result)
}, onError: { (error) in
debugPrint(error)
}).disposed(by: disposeBag)
default:
break
}
tableView.deselectRow(at: indexPath, animated: true)
}
}
WZNetwork is released under an MIT license. See LICENSE for more information.