在枚举的每个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
网友评论