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
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