let provider = MoyaProvider<MyService>()
provider.request(.getUser(id: 1)) { result in
switch result {
case let .success(response):
// 处理成功
print(response)
case let .failure(error):
// 处理失败
print(error)
}
}
let url = "https://jsonplaceholder.typicode.com/users/1"
AF.request(url, method: .get).response { response in
switch response.result {
case let .success(data):
// 处理成功
print(data)
case let .failure(error):
// 处理失败
print(error)
}
}
struct NetworkLoggerPlugin: PluginType {
func willSend(_ request: RequestType, target: TargetType) {
print("Sending request to \(request.request?.url?.absoluteString ?? "")")
}
func didReceive(_ result: Result<Moya.Response, MoyaError>, target: TargetType) {
switch result {
case .success(let response):
print("Received response: \(response.statusCode)")
case .failure(let error):
print("Request failed: \(error.localizedDescription)")
}
}
}
let provider = MoyaProvider<MyService>(plugins: [NetworkLoggerPlugin()])
enum MyService: TargetType {
case getUser(id: Int)
var sampleData: Data {
return "{\"id\": 1, \"name\": \"John Doe\"}".utf8Encoded
}
// 其他TargetType实现...
}
let provider = MoyaProvider<MyService>(stubClosure: MoyaProvider.immediatelyStub)
var task: Task {
switch self {
case .getUser:
return .requestPlain
case .uploadImage(let imageData):
let formData = MultipartFormData(provider: .data(imageData), name: "file", fileName: "image.jpg", mimeType: "image/jpeg")
return .uploadMultipart([formData])
}
}