如何使用 alamofire 实现 put http 请求
Posted
技术标签:
【中文标题】如何使用 alamofire 实现 put http 请求【英文标题】:how to implement put http request using alamofire 【发布时间】:2018-04-07 09:55:54 【问题描述】:下面我有我使用这个 api https://jsonplaceholder.typicode.com/posts 获取 http 请求的代码,我想知道如何使用 put 使用 alamofire 来更新 api 上的数据,我想使用 id 更新它
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
,
我的 alamofire 获取请求代码
func demoApi()
Alamofire.request("https://jsonplaceholder.typicode.com/posts", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON (response:DataResponse<Any>) in
switch(response.result)
// case .success(_):
// guard let json = response.result.value as! [[String:Any]]? else return
// print("Response \(json)")
// for item in json
//
// if let name = item["name"] as? String
// self.titleArray.append(name)
// print("ang name:" , name)
//
//
//
// DispatchQueue.main.async
// self.collectionView.reloadData()
//
//
// break
case .success(_):
guard let json = response.result.value as! [[String:Any]]? else return
print("Response \(json)")
for item in json
self.getAllDetail.append(item)
// if let title = item["title"] as? String
// self.titleArray.append(title)
//
if !self.getAllDetail.isEmpty
DispatchQueue.main.async
self.collectionView.reloadData()
break
case .failure(_):
print("Error")
break
【问题讨论】:
【参考方案1】:喜欢,有关信息,您可以从here获得样本
let params = ["userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"] as [String: Any]
Alamofire.request("https://jsonplaceholder.typicode.com/posts", method: .put, parameters: params, encoding: JSONEncoding.default, headers: nil).responseJSON (response:DataResponse<Any>) in
switch(response.result)
case .success(_):
guard let json = response.result.value as! [[String:Any]]? else return
print("Response \(json)")
break
case .failure(_):
print("Error")
break
【讨论】:
别担心我可以动态实现它 @DurnKurvirck -- 例如let params = ["userId": pass your ID,
【参考方案2】:
供将来参考:
let parameters = ["userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"] as [String : Any]
let urlString = "https://jsonplaceholder.typicode.com/posts"
Alamofire.request(urlString, method: .post, parameters: parameters,encoding: JSONEncoding.default, headers: nil).responseJSON
response in
switch response.result
case .success:
print(response)
break
case .failure(let error):
print(error)
【讨论】:
我很高兴@DurnKurvirck 这只是为了将来使用 POST 方法参考。 嗨,我想问一个问题,@abh 我似乎无法打印这些数据 "occurrence": "name": "once" , ,如何将其转换为 [] ? 抱歉我没听懂你的问题? 我想以这种方式打印它 print("You selected #( getTempDetails["occurrence:",["name"] as?String ?? "" )!") ,对吗?以上是关于如何使用 alamofire 实现 put http 请求的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Alamofire 中使用相同的 API 函数 .PUT 请求更新 JSON
如何在 Swift 中使用 Alamofire 将参数作为正文发送到 PUT 方法