학습
Swift Swift와 REST API 연동
Swift Swift와 REST API 연동 — 고급
Swift와 REST API 연동
1. 도입 (왜 배워야 하는가)
현대의 애플리케이션들은 다양한 외부 서비스와 데이터를 연동하는 것이 필수적입니다. REST API는 이러한 연동의 가장 일반적인 방법 중 하나로, 서버와 클라이언트 간의 데이터 통신을 가능하게 합니다. 예를 들어, 쇼핑몰 앱에서는 상품 정보를 서버에서 받아와야 하고, 소셜 미디어 앱에서는 사용자 프로필이나 게시글을 가져와야 합니다.
이러한 REST API 연동 기술을 모르면, 데이터를 효율적으로 처리할 수 없게 되어 앱의 가치를 저하시킬 수 있습니다. 결국 사용자가 원하는 정보를 제공하지 못하거나, 정보의 실시간 업데이트가 불가능해져 사용자 경험이 나빠질 수 있습니다.
2. 핵심 개념 설명
REST API
REST(Representational State Transfer)는 웹 서비스 아키텍처의 한 형태로, HTTP 프로토콜을 통해 데이터의 송수신을 합니다.
- 리소스: API에서 다루는 데이터의 단위(예: 사용자, 상품)
- 엔드포인트: 리소스에 접근하기 위한 URL
- HTTP 메서드: 데이터를 가져오거나 수정하기 위한 요청 방식 (GET, POST, PUT, DELETE)
관련 용어 정리
| 용어 | 설명 |
|---|---|
| JSON | 데이터 교환 형식, JavaScript Object Notation |
| HTTP | 웹에서 데이터 전송을 위한 프로토콜 |
| API Key | API에 접근하기 위한 인증 키 |
3. 기본 코드 예제
아래는 Swift를 사용하여 REST API에서 데이터를 가져오는 가장 기본적인 예제입니다.
import Foundation
let url = URL(string: "https://jsonplaceholder.typicode.com/posts")!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
// 에러 처리
if let error = error {
print("Error: \(error)")
return
}
// 데이터 처리
guard let data = data else {
print("No data received")
return
}
do {
// JSON 데이터를 파싱
let json = try JSONSerialization.jsonObject(with: data, options: [])
print("Response JSON: \(json)")
} catch {
print("JSON Parsing Error: \(error)")
}
}
// 작업 시작
task.resume()
실행 결과
Response JSON: [
{"userId": 1, "id": 1, "title": "...", "body": "..."},
...
]
코드 한 줄씩 동작 설명
import Foundation: Swift의 기본 기능을 사용하기 위해 Foundation 프레임워크를 임포트합니다.let url = URL(...): API의 엔드포인트를 URL 객체로 생성합니다.let task = URLSession.shared.dataTask(...): URLSession을 통해 API 요청을 위한 데이터 작업을 생성합니다.{ (data, response, error) in ... }: 클로저를 사용하여 데이터를 처리할 방법을 정의합니다.if let error = error: 요청 중 에러가 발생했는지 확인합니다.guard let data = data: 데이터가 잘 수신되었는지 확인합니다.let json = try JSONSerialization.jsonObject(...): 수신된 데이터(json)를 파싱합니다.print("Response JSON: \(json)"): 파싱된 JSON 데이터를 출력합니다.task.resume(): 비동기 작업을 시작합니다.- 에러 체크 누락: API 요청 중 에러가 발생할 수 있으므로 항상 에러를 체크해야 합니다.
- 비동기 작업 처리 누락: 데이터 요청 후 결과를 즉시 사용하려고 하면 문제가 발생할 수 있습니다.
- JSON 데이터 형식 오류: 서버에서 반환된 JSON 형식이 예상과 다를 수 있으니 항상 형식을 확인해야 합니다.
- REST API는 현대 앱 개발에 필수적인 요소이며, 데이터를 서버와 송수신하는 방법을 제공합니다.
- Swift에서 URLSession을 사용하여 비동기적으로 데이터를 처리할 수 있습니다.
- JSON 형식을 사용하여 데이터를 교환하며, 이를 파싱하는 기술이 필요합니다.
- Swift에서의 JSON 데이터 모델링
- 비동기 프로그래밍 및 Combine 프레임워크
- OAuth 2.0을 사용한 인증 방식
4. 실전 활용 예제
1. 쇼핑몰 장바구니 구현
쇼핑몰 앱에서 장바구니에 추가한 상품 목록을 서버로부터 받아오는 경우:
let cartUrl = URL(string: "https://api.example.com/cart")!
let cartTask = URLSession.shared.dataTask(with: cartUrl) { (data, response, error) in
// 에러 처리 및 데이터 파싱 생략
}
cartTask.resume()
2. 사용자 정보 업데이트
사용자가 정보를 수정할 때, PUT 요청을 사용하여 서버에 데이터를 전송하는 경우:
var request = URLRequest(url: URL(string: "https://api.example.com/user")!)
request.httpMethod = "PUT"
request.httpBody = try? JSONSerialization.data(withJSONObject: userInfo)
let updateTask = URLSession.shared.dataTask(with: request) { (data, response, error) in
// 에러 처리 및 응답 처리 생략
}
updateTask.resume()
5. 흔한 실수와 주의사항
- 잘못된 코드: 에러 체크를 생략 - 올바른 코드:
if let error = error {
print("Error: \(error)")
return
}
- 잘못된 코드: 데이터 요청 후 즉시 사용 - 올바른 코드: 클로저 내에서 처리
- 잘못된 코드: JSON 파싱 시 형식 무시 - 올바른 코드: 구조체를 정의하여 타입 안전한 파싱
6. 정리
다음에 학습하면 좋은 주제
이 자료를 통해 Swift와 REST API 연동에 대한 이해를 높이고, 실제 개발에 활용할 수 있는 기초를 다지길 바랍니다.