123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- //
- // NetworkManager.swift
- // fiveConstant
- //
- // Created by 李建 on 2023/1/17.
- //
- import Foundation
- import Moya
- import HandyJSON
- import SwiftUI
- public class HttpRequest<M: Codable> {
- public class func loadData<T: TargetType>(target: T, success: @escaping ((_ returnData: M) -> Void), failure: @escaping ((Int?, String?) ->Void) = {code, msg in }) {
-
- let provider = MoyaProvider<T>(plugins: [
- networkPlugin,
- RequestHandlingPlugin(),
- NetworkLoggerPlugin(configuration: NetworkLoggerPlugin.Configuration(logOptions: .verbose))
- ])
- provider.request(target, completion: { result in
- switch result {
- case let .success(response):
- do {
- guard let json = try response.mapJSON() as? [String: Any] else {
- failure(-1, "不合法的响应数据")
- return
- }
- let decoder = JSONDecoder()
- let baseModel = try? decoder.decode(BaseModel<M>.self, from: response.data)
- guard baseModel != nil else {
- failure(json["code"] as? Int, json["message"] as? String)
- let msg = json["message"] as? String ?? "未知错误"
- let code = json["code"] as? Int
- HUD.show(title: msg)
- if code == 9999 || code == 401 {
- ProgressState.manager.isNeedLogin = true
- }
- return
- }
- if response.statusCode == 401 {
- // 跳转登录
- ProgressState.manager.isNeedLogin = true
- return
- }
- switch baseModel?.code {
- case 0:
- success((baseModel?.data)!)
- default:
- HUD.show(title: baseModel!.message)
- failure(baseModel?.code, baseModel?.message)
- }
- } catch {
- print(error)
- }
- case let.failure(error):
- failure(error.response?.statusCode, "请求出错")
- }
- })
- }
- }
|