import Alamofire
func getUser(id: Int, completion: @escaping (Result<User, Error>) -> Void) {
let url = "https://api.example.com/user/\(id)"
AF.request(url).responseJSON { response in
switch response.result {
case .success(let value):
do {
let data = try JSONSerialization.data(withJSONObject: value)
let user = try JSONDecoder().decode(User.self, from: data)
completion(.success(user))
} catch {
completion(.failure(error))
}
case .failure(let error):
completion(.failure(error))
}
}
}
func createUser(name: String, completion: @escaping (Result<User, Error>) -> Void) {
let url = "https://api.example.com/user"
let parameters: [String: Any] = ["name": name]
AF.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON { response in
switch response.result {
case .success(let value):
do {
let data = try JSONSerialization.data(withJSONObject: value)
let user = try JSONDecoder().decode(User.self, from: data)
completion(.success(user))
} catch {
completion(.failure(error))
}
case .failure(let error):
completion(.failure(error))
}
}
}
provider.request(.getUser(id: 1)) { result in
switch result {
case .success(let response):
// 处理逻辑...
case .failure(let error):
// 处理逻辑...
}
}
没有 Moya,你将不得不重复许多配置和响应处理的代码,导致代码可读性降低和维护成本增加。Moya 的引入使得网络请求更具结构化和模块化,从而减少了这些重复的 boilerplate 代码。