Swiftで外部のWeb APIを呼び出してデータを取得したり送信したりする方法を紹介します。
ここでは基本のURLSessionを使ったやり方を解説します。
そもそもAPIを叩くってどういうこと?
API(Application Programming Interface)は、他のサービスが公開しているデータや機能を使うための窓口です。
APIを叩くとは、プログラムからその窓口にリクエストを送ってデータをもらったり、情報を送ったりすることを指します。
APIのURLとエンドポイントを確認
APIには、エンドポイントと呼ばれるURLがあります。
たとえば、天気情報を取得するAPIがあれば、そのURLにリクエストを送って天気データを取得します。
SwiftでのAPI呼び出し手順
- URLを作る
guard let url = URL(string: "https://api.example.com/data") else {
print("URLが不正です")
return
}
- URLRequestを作る(GETやPOSTなどの設定をする)
var request = URLRequest(url: url)
request.httpMethod = "GET" // GETリクエストの場合
GET: データを取得
URLSessionでデータタスクを作成してリクエストを送る
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("エラーが発生しました: \(error)")
return
}
guard let data = data else {
print("データがありません") // 取得したデータを文字列として表示(デバッグ用)
return
}
if let responseString = String(data: data, encoding: .utf8) {
print("レスポンス: \(responseString)")
}
}
task.resume()
JSONデータを扱う例
APIから返ってくるデータは多くの場合JSON形式です。
JSONをSwiftの構造体にデコードして使う例を示します。
JSONの構造体を作成
struct User: Codable {
let id: Int
let name: String
let email: String
}
デコードして使う
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("エラー: \(error)")
return
}
guard let data = data else {
print("データなし")
return
}
do {
let user = try JSONDecoder().decode(User.self, from: data)
print("ユーザー名: \(user.name), メール: \(user.email)")
} catch {
print("JSONデコード失敗: \(error)")
}
}
task.resume()
POST: データを送信すること
guard let url = URL(string: "https://api.example.com/users") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let newUser = User(id: 123, name: "太郎", email: "taro@example.com")
do {
request.httpBody = try JSONEncoder().encode(newUser)
} catch {
print("失敗")
}
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("エラー: \(error)")
return
}
print("成功")
}
task.resume()
まとめ
-
URLSessionを使ってAPIを叩くことができる
-
GETはURLを指定してリクエストを送るだけ
-
JSONデータはCodableで簡単にデコード・エンコードできる
-
POSTなどHTTPメソッドも変更可能
SwiftのAPI通信はまずはこれらを押さえて、徐々に応用していきましょう!
以上、SwiftでAPIを叩く方法でした!ぜひ参考にしてください!🙌