iOS
HTTP
Swift
Get

Swiftで簡単にGETする

はじめに

今回はライブラリを使わずにGETをしていきたいと思います。
サーバー側は、jsonを返してくれるhttpbinと言うものを使いました。

実装

返ってくる型としては[String:Any]を想定して実装しています。
ライブラリを使わないので、URLSessionを使っています。

APIClient.swift
class APIClient {

    enum Result {
        case success([String:Any])
        case failure(Error)
    }

    public static func apiResult(url: String = "https://httpbin.org/get", completion: @escaping (Result) -> Void) {
        let request = URLRequest(url: URL(string: url)!)
        URLSession.shared.dataTask(with: request) { (data, response, error) in
            if error != nil{
                completion(.failure(error!))
                return
            }
            do {
                let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments)
                if let json = json as? [String:Any] {
                    completion(.success(json))
                    return
                }
            } catch let error {
                completion(.failure(error))
            }
        }.resume()
    }
}

このAPIClientをViewControllerに実装していきます。

ViewController.swift
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        APIClient.apiResult { (result) in
            switch result {
            case .success(let json):
                print("success")
                print(json)
            case .failure(let error):
                print("failure")
                print(error)
            }
        }

    }
}

結果

こういった感じで結果が返ってきます。

success
["args": {
}, "headers": {
    Accept = "*/*";
    "Accept-Encoding" = "br, gzip, deflate";
    "Accept-Language" = "ja-jp";
    Connection = close;
    Host = "httpbin.org";
    "User-Agent" = "APIClientSample/1 CFNetwork/897.15 Darwin/17.5.0";
}, "origin": 163.44.48.239, "url": https://httpbin.org/get]

最後に

GETやPOSTだけならライブラリを使わずに簡単に実装できると思います。
ぜひ開発に役立ててください!

一応、githubに載せておきます。