Moya使用


Moya使用

========================
我觉得看这代码就知道怎么用了,其实就是一个整理。

代码示例

//
//  IntroductionAPI.swift
//  RunInto
//
//  Created by 张赛东(手机:15674119605) on 2021/3/30.
//  Copyright © 2021 adong666666. All rights reserved.
//
// swiftlint:disable identifier_name
import Foundation
import Moya
import HandyJSON

let ip = "http://47.119.162.99"

let culturalRelicsDataUrl = ip + "/runinto/culturalRelicsData"
let models3DDataUrl = ip +  "/runinto/models3DData"
let introductionDataUrl = ip + "/runinto/introductionData"
let paintingModeslDataUrl = ip + "/runinto/paintingModelsData"
let paintinggRomanceDataUrl = ip + "/runinto/paintingRomanceData"
let stylePredictDataUrl = ip + "/runinto/stylePredictData"
/// 介绍接口
let introductionPovider = MoyaProvider<IntroductionAPI>()

enum IntroductionAPI {
    case culturalRelicsData
    case models3DData
    case introductionData
    case paintingModeslData
    case paintinggRomanceData
    case stylePredictData
}

extension IntroductionAPI: TargetType {
    //服务器地址
    public var baseURL: URL {
        return URL(string: ip)!
    }
    
    var path: String {
        switch self {
        case .culturalRelicsData:
            return "/runinto/culturalRelicsData"
        case .models3DData:
            return "/runinto/models3DData"
        case .introductionData:
            return "/runinto/introductionData"
        case .paintingModeslData:
            return "/runinto/paintingModelsData"
        case .paintinggRomanceData:
            return "/runinto/paintingRomanceData"
        case .stylePredictData:
            return "/runinto/stylePredictData"
        }
    }
    
    var method: Moya.Method { return .get }
    var task: Task {
        let parameters: [String: Any] = [:]
        return .requestParameters(parameters: parameters, encoding: URLEncoding.default)
    }
    
    var sampleData: Data { return "".data(using: .utf8)!}
    var headers: [String: String]? { return nil }
}

使用示例

在合适的地方调用,mapJSON()也是Moya里的函数。JSON()则是SwiftyJSON里的常用函数

//
//  NetworkTool.swift
//  RunInto
//
//  Created by 张赛东(手机:15674119605) on 2021/3/30.
//  Copyright © 2021 adong666666. All rights reserved.
//
//swiftlint:disable void_return
import Foundation
import Alamofire
import SwiftyJSON
import HandyJSON

protocol NetworkToolProtocol {
    static func loadCulturalRelicsData(input: IntroductionAPI, completionHandler: @escaping ([Introduction?]) -> ())
}

extension NetworkToolProtocol {
    static func loadCulturalRelicsData(input: IntroductionAPI, completionHandler: @escaping ([Introduction?]) -> ()) {
        //        AF.request(culturalRelicsDataUrl, method: .get, parameters: [:]).responseJSON(completionHandler: { (response) in
        //            let value = response.value
        //            let json = JSON(value as Any)
        //            log(json)
        //        })
        introductionPovider.request(input) { (result) in
            if case let .success(response) = result {
                //解析数据
                let data = try? response.mapJSON()
                let json = JSON(data!)
                let culturalRelicsData = json["data"]["culturalRelicsData"]
                //log(json)
                //log(culturalRelicsData)
                if let mappedObject = JSONDeserializer<Introduction>.deserializeModelArrayFrom(json: culturalRelicsData.description) {
                    //log(mappedObject)
                    //log(mappedObject.count)
                    completionHandler(mappedObject)
                }
            }
        }
    }
}

struct NetworkTool: NetworkToolProtocol {}

文章作者: 张赛东
文章链接: https://zsd.name
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张赛东 !
评论
  目录