如何使用 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 方法

使用 Alamofire 2.0 请求失败

用于 PUT 方法的 Alamofire Content-Type application/json

Alamofire - 如何发送一系列无钥匙对象

Alamofire 串行请求