美文网首页
swift中枚举的应用之网络请求

swift中枚举的应用之网络请求

作者: 梁森的简书 | 来源:发表于2021-09-03 15:19 被阅读0次

在枚举的每个case中配置好网络请求方法、路径、参数后,直接使用枚举进行网络请求即可。
该枚举会遵守某个协议,使用枚举进行网络网络请求的方法是该协议中的网络请求方法。
代码:

enum GoodsRequest {
    /// 首页
    case homeData
    /// 门店列表
    case storeList(lon: String, lat: String)
}

extension GoodsRequest: RequestProtocol {
    var method: HTTPMethodType {
        switch self {
        case .homeData:
            return .get
        case .storeList:
            return .post
        }
    }
    
    var path: String {
        switch self {
        case .homeData:
            return "v1/index"
        case .storeList:
            return "v1/index/store"
        }
    }
    
    var params: Dictionary<String, Any>? {
        switch self {
        case .homeData:
            return ["storeId":  "110101"]
        case .storeList(let lon, let lat, let storeIds):
            return ["lng":lon,
                    "lat": lat,
                    "storeId": "110101"]
        }
    }
}

枚举中配置的请求方法、接口路径、参数也都是遵守的协议(或者该协议继承的协议)中的属性。

public protocol NetURLServerProtocol {
    //require
    var path: String { get }
    var method: HTTPMethodType { get }
    
    //optional
    var headers:Dictionary<String,String>{ get }
    var baseUrl: String { get }
    var params: Dictionary<String, Any>?{ get }
}

其中RequestProtocol继承自NetURLServerProtocol

相关文章

网友评论

      本文标题:swift中枚举的应用之网络请求

      本文链接:https://www.haomeiwen.com/subject/jedxiltx.html