【发布时间】:2018-06-15 06:56:17
【问题描述】:
我正在使用 Alamofire 库进行 REST API 调用。我有一个
Dictionary(String, Any) 类型的请求正文。请求正文中很少有对象是某些 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”个请求添加请求正文,因此必须有一个 RequestParameter 将根据 api 调用进行修改。 Body 中可以有额外的或单个的 Parameter(s)。 大多数情况下,“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
【问题讨论】:
-
我不建议在 Swift 3+ 中使用 NSDictionary,但更多的 Dictionary(Swift 版本)。也许您还想做
requestParam.parameters(withKeys:["hotel", "address"]),它只返回带有这些键和相应值的参数,或者如果您的 API 调用有“名称”,requestParam.parameters(name:"APICallName1")等。 -
requestParam.parameters(withKeys:["hotel", "address"]).. 抱歉没有找到你 -
创建一个额外的方法,返回带有所需键/值的字典
标签: ios swift parameters httprequest alamofire