Alamofire - 具有通用响应的通用网络调用

Alamofire - Generic Network Call with Generic Response

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"
        }
    ]
}

我的成功响应来自数据数组

我试图使网络 class 成为通用的,但我无法为 post 和 api[=13 中的 body 创建通用参数=]

这是我的注册模型,我的 body of api

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

我需要为网络实现通用 class 我探索了很多但没有达到标准答案

我希望在这里我能得到

提前致谢

API responseJSON 已弃用,只有 response returns 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