如何使用 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 请求的主要内容,如果未能解决你的问题,请参考以下文章