[iOS/Swift] URLSession Task 네트워크 api 통신
Swift 네트워크 통신
feat. URLSession , URLSessionTask
iOS에서 http 네트워크 통신을 위해서는
URLSession과 URLSessionTask 를 사용해야 한다!
라이브러리인 Alamorfire와 moya 도
URLSession을 래핑한것으로 URLSession을 알아야
수월하게 사용가능하다
먼저 URLSession, URLSessionTask 하는 일과 속성을 알아보자!
📌 URLSession
iOS 와 서버 간의 http 프로토콜을 지원하며 Request와 Response 구조를 가진다.
URLSession은 여러 개의 URLSessionTask를 생성하여 이를 통해 서버와 통신을 하고, Delegate로 네트워크의 과정을 확인하는 형태이다.
|
🧷 URLSession 의 속성
- URLSession은 configuration이라는 속성 3가지를 가진다.
✔️ .default - 기본 통신으로 디스크 기반 캐싱을 지원합니다.
let defaultSession = URLSession(configuration: .defualt)
✔️ .ephemeral - 쿠키나 캐시를 저장하지 않는 정책을 가져갈 때 사용합니다. (ex. Safari의 개인정보보호 모드)
let ephemeralSession = URLSession(configuration: .ephemeral)
✔️ .background - 앱이 백그라운드에 있는 상황에서 콘텐츠 다운로드, 업로드를 할 때 사용합니다.
let backgroundSession = URLSession(configuration: .background)
📌 URLSessionTask
URLSession 작업 하나를 나타내는 추상 클래스이다.
🧷 URLSessionTask 의 작업 유형
- URLSessionTask는 4가지 작업유형을 제공한다
1️⃣ URLSessionDataTask
- 서버에서 메모리로 데이터를 받아오는 작업 수행한다
- 백그라운드에서는 지원되지 않는다
2️⃣ URLSessionUploadTask
- 서버에서 메모리로 데이터를 받아오는 작업 수행한다
- DataTask 보다 Upload 에 특화되어 있으며, file 형태 업로드할 때 사용한다
- 백그라운드에서 업로드를 지원한다
3️⃣ URLSessionUploadTask
- file형태의 데이터를 다운받을 때 사용한다
- 백그라운드에서 업로드를 지원한다
4️⃣ URLSessionStreamTask
- 양방향의 TCP/IP 연결을 통해 메시지를 교환할 때 사용한다
참조 : https://developer.apple.com/documentation/foundation/urlsessiontask