![](/img/trans.png)
[英]how to pass parameters in body when sending request with Alamofire in Swift
[英]Swift 3: How to add or remove parameters in Request Body in ALamofire 4?
我將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調用進行修改。 主體中可以有額外或單個參數。 通常,“ 酒店 ”將是所有請求正文的通用參數。
我已經嘗試了很多方法來解決此問題,但是卻出現異常,因為它無法解析某些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 **/
我發現了兩種方法。
創建一個addExtraParams:[String:Any] =:字典類型,並在其中添加所需的key : value
對。
為相應的api創建請求函數,並僅使用登錄后獲得的object
來更新所需參數的值。
例如:
var user = response.object as! Person
var request = RequestParameters()
request.hotel.name = user.hotel_name
在您創建的函數中,在Alamofire請求之前更新值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.