json - 如何通过 Swift 和 Rest API 之间的连接获取和发布 JSON?

标签 json swift rest

我目前正在为一家公司编写内部应用程序,作为我教育的一部分。所以我之前没有用 Swift 编程过,公司给了我一个他们编写的外部 REST 服务器,它提供 GET、POST、PUT 和 DELETE,并需要服务器名、数据库名、数据库方案和表名。 REST 服务器返回一个 JSON 对象。

我之前已经搜索过答案,但它们主要适用于本地 Rest 服务器,或者代码适用于较旧的 Swift 版本。如果您知道我该如何处理这个问题,请帮助我。

最佳答案

你应该看看这个Tutorial. 这是非常基础的,但您将学习如何使用 URLSession类。

我编写了这个非常基本的帮助器类来发送请求:

class WebRequest
{
    static func getAsync(_ urlString: String, callback: @escaping (Data?, Error?) -> Void)
    {
        let url = URL(string: urlString)

        let request = URLRequest(url: url!, cachePolicy: .reloadIgnoringCacheData, timeoutInterval: 10)

        let task = URLSession.shared.dataTask(with: request, completionHandler:
        {
            data, response, error in

            callback(data, error)
        })

        task.resume()
    }

    static func postAsync(_ urlString: String, callback: @escaping (Data?, HTTPURLResponse?) -> Void)
    {
        let url = URL(string: urlString )
        let request = NSMutableURLRequest(url: url!)
        request.httpMethod = "POST"
        request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData

        let task = URLSession.shared.dataTask(with: request as URLRequest, completionHandler:
        {
            data, response, error in

            let httpResponse = response as? HTTPURLResponse
            callback(data, httpResponse)
        })

        task.resume()
    }
}

用法:

WebRequest.getAsync(url)
{
    data, error in

    if let error = error
    {
        // Error Handling
    }
    else if let data = data
    {
        let decoder = JSONDecoder()
        let myObject = try? decoder.decode(YourCodableDataModelClass.self, from: data)

        if let object = myObject
        {
            // Your JSON was parsed successfully.
        }
        else
        {
            // Object coould not be loaded.
        }
    }
}

为了使其发挥作用,您的类应该实现 Codable协议(protocol)。

关于json - 如何通过 Swift 和 Rest API 之间的连接获取和发布 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57106587/

相关文章:

javascript - 将 HTML 遍历到 JSON

python - 如何从字典列表中删除 ('u' )unicode?

ios - 在 Swift 中在后台继续计数器

node.js - 通过 REST 进行 native Kubeless 调用

objective-c - 在 Xcode 中使用 NSURLConnection 发送 JSON 数据

javascript - React JS - 未捕获的 TypeError : this. props.data.map 不是函数

ios - 在 Swift 中为包含嵌套对象的对象实现深度复制的正确方法?

swift - 使用 Swift 将图像上传到 Firebase 3.0 后如何正确获取图像 URL

rest - 出现 405 错误 - 在 postman 中工作时方法不允许 Swagger 的错误

java - 登录然后以线程安全的方式发出请求