Alamofire -具有通用响应的通用网络呼叫


class ApiManager {
let  url = "https://15f1-61-246-140-18.in.ngrok.io/Legal251AppAPI_IOS/api/lgapp/index.php?parameter=sendotp"
static let sharedInstance = ApiManager()

func callingApi(signUp : myModel){
let headers: HTTPHeaders = [
"Authkey": Secrets.AuthKey

]
AF.request(url, method: .post, parameters:signUp , encoder: JSONParameterEncoder.default, headers: headers).response{
response in debugPrint(response)
}


}   
}

我的回答

{
"code": 200,
"status": "success",
"message": "SMS IS SENT",
"data": [
{
"status": 1,
"number": "9999911144"
}
]
}

我的成功响应是传入数据数组

我试图使网络类泛型,但在我不能使泛型参数后的主体在api

这里是我的注册模型,我的api主体

struct myModel: Encodable{
var number : String = String()
var action :String = String()

}

我需要实现网络的通用类,我探索了很多,但没有达到标记答案

我希望在这里我能得到

thanks you In advance

APIresponseJSON已弃用,仅response返回Data

最推荐的API是responseDecodable,它直接将JSON解码为模型。

你可以使用 来使你的API调用泛型
class ApiManager {
let  url = "https://15f1-61-246-140-18.in.ngrok.io/Legal251AppAPI_IOS/api/lgapp/index.php?parameter=sendotp"
static let sharedInstance = ApiManager()

func callingApi<Input: Encodable, Output: Decodable>(signUp : Input, type: Output.Type){
let headers: HTTPHeaders = [
"Authkey": Secrets.AuthKey
]
AF.request(url, method: .post, 
parameters: signUp, 
encoder: JSONParameterEncoder.default, 
headers: headers).responseDecodable(of: Output.self, decoder: JSONDecoder()) { response in
switch response.result {
case .success(let result): print(result)
case .failure(let error): print(error)
}
}
}
}   

type参数中传递根对象的类型,例如Response.self

最新更新