Moya 减少 boilerplate 代码
1. 封装网络请求
import Moya
enum MyService {
case getUser(id: Int)
case createUser(name: String)
}
extension MyService: TargetType {
var baseURL: URL { return URL(string: "https://api.example.com")! }
var path: String {
switch self {
case .getUser(let id):
return "/user/\(id)"
case .createUser:
return "/user"
}
}
var method: Moya.Method {
switch self {
case .getUser:
return .get
case .createUser:
return .post
}
}
var task: Task {
switch self {
case .getUser:
return .requestPlain
case .createUser(let name):
return .requestParameters(parameters: ["name": name], encoding: JSONEncoding.default)
}
}
var headers: [String: String]? {
return ["Content-type": "application/json"]
}
var validationType: ValidationType {
return .successCodes
}
var sampleData: Data {
return Data()
}
}2. 简化请求和响应处理
3. 集成插件和错误处理
总结
Last updated