【问题标题】:How to Get and Post JSON with a connection between Swift and Rest API?如何通过 Swift 和 Rest API 之间的连接获取和发布 JSON?
【发布时间】:2019-07-19 06:17:51
【问题描述】:

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

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

【问题讨论】:

    标签: json swift rest


    【解决方案1】:

    你应该看看这个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 协议。

    【讨论】:

    • 感谢您的帮助,我一定会查看教程和您的答案,如果它在接下来的一周内有效,我可能会提供反馈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2021-02-05
    • 1970-01-01
    相关资源
    最近更新 更多