http请求删除并放入

时间:2018-04-06 01:38:44

标签: ios swift httprequest

以下是我获取和发布的HTTP请求的代码。我想知道的是如何进行删除和放置的HTTP请求。我已经让get和post工作成为可能。我想知道如何根据我的代码删除和放置。当我想要将其更改为删除时,我的邮政编码中要更改什么?缺少什么?我想删除使用ID 例如“id”:16,

let parameters = ["name": "test", "desc": "test" , "reward":"1.00" , "sched":"2018-04-05T11:49:51+08:00",  "occurrence":["name": "once"]
    , "status": "created",  "created_by": "test@gmail.com","created_for": "test.com"] as [String : Any]

guard let url = URL(string: "http://test.tesst.eu:8000/api/v1/test/") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return }
request.httpBody = httpBody

let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
    if let response = response {
        print(response)
    }

    if let data = data {
        do {
            let json = try JSONSerialization.jsonObject(with: data, options: [])
            print(json)
        } catch {
            print(error)
        }
    }
}.resume()

获取

guard let url = URL(string: "http://test.test:8000/api/v1/test") else { return }

let session = URLSession.shared
session.dataTask(with: url) { (data, response, error) in
    if let response = response {
        print(response)
    }

    if let data = data {
        print(data)
        do {
            let json = try JSONSerialization.jsonObject(with: data, options: [])
            print(json)
        } catch {
            print(error)
        }
    }
}.resume()

2 个答案:

答案 0 :(得分:1)

唯一不同的是 GET ,参数位于网址本身, POST&删除& PUT 的工作方式相同,只需更改httpMethod参数并指定httpBody,如果您愿意,这意味着

DELETE:表示从特定网址中删除资源

PUT:将资源放入Web服务器

//

let parameters = ["ID": "16"] as [String : Any]
guard let url = URL(string: "http://test.tesst.eu:8000/api/v1/test/") else { return }
var request = URLRequest(url: url)
request.httpMethod = "DELETE"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
guard let httpBody = try? JSONSerialization.data(withJSONObject:parameters, options: []) else { return }
request.httpBody = httpBody  

答案 1 :(得分:1)

您应该了解每种方法类型之间的差异。它会帮助你,你应该做什么,什么时候做。

PUT

将实体存储在URI中。 PUT可以创建新实体或更新现有实体。 PUT请求是幂等的。幂等性是PUT与POST请求的期望之间的主要区别。

PUT方法请求将所包含的实体存储在提供的Request-URI下。如果Request-URI引用已经存在的资源,则封闭的实体应该被视为驻留在源服务器上的实体的修改版本。如果Request-URI未指向现有资源,并且该URI能够被请求用户代理定义为新资源,则源服务器可以使用该URI创建资源。如果创建了新资源,则源服务器必须通过201(已创建)响应通知用户代理。如果修改了现有资源,则应该发送200(OK)或204(No Content)响应代码以指示请求的成功完成。如果无法使用Request-URI创建或修改资源,则应该给出适当的错误响应,以反映问题的性质。实体的接收者绝不能忽略它不理解或实现的任何Content- *(例如Content-Range)头,并且在这种情况下必须返回501(未实现)响应。

修改ID为1的地址:

  

PUT /地址/ 1   
注意:PUT取代现有实体。如果只提供了数据元素的子集,则其余部分将替换为空或null。

urlRequestInstance.httpMethod = "PUT"

DELETE

请求删除资源;但是,不必立即删除资源。它可能是异步或长时间运行的请求。

DELETE方法请求源服务器删除Request-URI标识的资源。可以通过源服务器上的人为干预(或其他方式)覆盖此方法。即使从源服务器返回的状态代码指示操作已成功完成,也无法保证客户端已执行该操作。但是,服务器不应该指示成功,除非在给出响应时,它打算删除资源或将其移动到不可访问的位置。

如果响应包括描述状态的实体,则成功响应应为200(OK),如果操作尚未执行,则应为202(已接受);如果已执行操作但响应为204(无内容)不包括实体。

删除ID为1的地址:

  

DELETE / addresses / 1

urlRequestInstance.httpMethod = "DELETE"

以下是适合您的精彩教程:

现在你可以尝试一个示例代码,由Sh_Khan回答