gpt4 book ai didi

ios - swift 3 : How to add or remove parameters in Request Body in ALamofire 4?

转载 作者:行者123 更新时间:2023-11-30 11:53:19 28 4
gpt4 key购买 nike

我正在使用 Alamofire 库进行 REST API 调用。我有一个类型为
的请求正文字典(字符串,任意)。请求正文中存在一些对于某些 API 来说是通用的对象。

例如:第一个 API 调用在请求正文中包含以下参数。

var hotel = HotelParameter()
var food = foodParameter()
var address = addressParameter()

class RequestParameters: NSObject{

func parameter() -> NSDictionary {

var parameter : [String : Any] = [:]
parameter["hotels"] = hotel.params()
parameter["foodType"] = food.params()
parameter["address"] = address.params()

return parameter as! NSDictionary
}

现在,在第二次 API 调用中,我只需在 RequestParameter 中传递“hotels”和“address”。我的问题是:如何在 Alamofire 请求正文中添加或删除任何额外参数?

由于我无法为“n”个请求添加请求正文,因此必须有一个将根据 api 调用进行修改的请求参数。主体中可以有额外或单个参数。大多数情况下,“hotels”将是所有请求正文的通用参数。

我已经尝试了很多方法来解决这个问题,但是我得到了异常,因为它无法解析一些 JSON 响应。我已经创建了函数来调用 api,并且像这样传递参数。

var requestParam = RequestParamters()

Alamofire.request(url,
method: .post,
parameters: requestParam.parameter(),
encoding: JSONEncoding.default, headers: headers)
.responseJSON(completionHandler: { (data : DataResponse<Any>) in

最佳答案

我不确定,我是否正确理解了您的要求。但根据我的理解,你必须多次点击一个API,并且每次的参数都应该不同。因此,只需编写一个将参数作为方法参数的方法。这是根据您的要求的示例代码。

func getAllHotels(_ params:Dictionary, callback:@escaping (Dictionary<String, Any>, Error?)->Void)
{
let parameters: Parameters = params

Alamofire.request(baseUrl + "/getHotels", method: .post,parameters: parameters, encoding: URLEncoding.default).responseJSON { response in
debugPrint("All Response from API: \(response)")
switch response.result
{
case .success(let value):
callback(value as! Dictionary, nil)
case .failure(let error):
callback([:], error)
}
}
}

/** Now call the above method with your required parameters **/

关于ios - swift 3 : How to add or remove parameters in Request Body in ALamofire 4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48113994/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com