LoginSignup
1
4

More than 1 year has passed since last update.

URLSession Swift

Posted at

APIとは

アプリケーションプログラミングインターフェイスの略称。
他のプログラムと簡単に接続できる
殆どのプログラムではデータの送受信等にAPIが使用されている.

SwiftでAPIを取ってくるにはどうすればよいか

① URLの作成

② URLセッションの作成

③ URLセッションにタスクを与える。

④ タスクを始める
この順番でコードを書いていく

api.swift
//例
//ネットワーキングする場所
    func performRequest(urlString:String) {
        //① URLの作成
        if let url = URL(string: urlString) {//optionalURL型で帰ってくる
            //② URLセッションの作成(基本デフォルト設定)
            let session = URLSession(configuration: .default)
            //③ URLセッションにタスクを与える。//completionHandlerとは値として関数を取ります。
            let task = session.dataTask(with: url, completionHandler: handle(data:response:error:))
            //④ タスクを始める(データを取ってくる)
            task.resume()
        }
    }

    func handle(data:Data?,response:URLResponse?,error:Error?){
        //errorがわたってくるのでエラーがあったかどうか確かめられる。
        if error != nil {
            print(error!)
            return
        }
        if let safeData = data {
            let dataString = String(data: safeData, encoding: .utf8)
            print(dataString!)
        }
    }

クロージャーを使うと簡潔にかけるので通常は下記の様に書く

closure.swift

 func performRequest(urlString:String) {
        //① URLの作成
        if let url = URL(string: urlString) {
            //② URLセッションの作成(基本デフォルト設定)
            let session = URLSession(configuration: .default)
           //③ URLセッションにタスクを与える。//completionHandlerとは値として関数を取ります。
            let task = session.dataTask(with: url) { data, response, error in
                if error != nil {
                    print(error)
                    return
                }
                if let SafeData = data {
                    let dataString = String(data: safeData, encoding: .utf8)
                 print(dataString!)
                }
            }
        //④ タスクを始める
            task.resume()
        }
    }

これだけだとString型のものしかとってこれないのでこれをParseJsonをしてswiftでも使えるようにしなくてはいけない。

補足情報

URLSessionとは ネットワーキングする際にネットワーク上のデータをまとめてダウンロードしてくれたりアップロードしてくれたりする。
URLSessionTaskとは URLSessionがなにをするのかをきめる。ダウンロードなのかアップロードなのか等(URLSessionDataTask URLSessionUploadTask URLSessionDownloadTask
URLSessionConfigurationとは URLSessionの設定。.defaultでデフォルト設定が多いが、キャッシュやクッキーの扱い方によってbackground ephemeralなどに設定する必要がある。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4