REST APIの呼び出し

Swiftにおける「REST APIの呼び出し」は、アプリケーションが外部のWebサービスとデータをやり取りする際に重要な技術です。REST(Representational State Transfer)とは、HTTPメソッド(GET、POST、PUT、DELETEなど)を使って、サーバー上のリソースにアクセス・操作するAPI設計のスタイルです。Swiftでは主にURLSessionクラスを使ってREST APIにアクセスします。

以下に、SwiftでREST APIを呼び出す際の基本的な流れを詳しく説明します。


1. 準備:URLの作成

まず、APIのエンドポイントURLをURL型で用意します。

swift
guard let url = URL(string: "https://api.example.com/items") else { return }

2. リクエストの作成

HTTPメソッド(例: GET、POSTなど)を指定するために、URLRequestを使います。

swift
var request = URLRequest(url: url) request.httpMethod = "GET"

POSTやPUTなどの場合は、リクエストボディやヘッダの設定も必要になります。

swift
request.httpMethod = "POST" request.addValue("application/json", forHTTPHeaderField: "Content-Type") let body = ["name": "item1", "price": 100] request.httpBody = try? JSONSerialization.data(withJSONObject: body)

3. 通信の実行

URLSession.shared.dataTaskを使って非同期で通信します。

swift
let task = URLSession.shared.dataTask(with: request) { data, response, error in if let error = error { print("通信エラー: \(error.localizedDescription)") return } guard let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else { print("サーバーエラー") return } guard let data = data else { print("データなし") return } // デコード処理へ } task.resume()

4. JSONのデコード(Decodable)

取得したJSONデータは、Swiftの構造体とCodableプロトコルを使ってデコードします。

swift
struct Item: Codable { let id: Int let name: String let price: Int } do { let items = try JSONDecoder().decode([Item].self, from: data) print(items) } catch { print("デコード失敗: \(error.localizedDescription)") }

5. エラーハンドリングとUI更新

非同期処理内ではメインスレッドでUIを更新する必要があるため、DispatchQueue.main.asyncを使います。

swift
DispatchQueue.main.async { // ここでUIを更新 }

まとめ

SwiftでのREST APIの呼び出しは、以下のステップで構成されます。

  1. URLURLRequestの準備

  2. HTTPメソッドとヘッダの設定

  3. URLSessionで非同期通信

  4. JSONDecoderを使ったデータのデコード

  5. エラー処理とUI更新の考慮

これらの流れを正しく理解して実装することで、外部APIとの安定した通信が可能になります。

生成日:2025/05/04