본문 바로가기

iOS

[iOS] URLSession과 URLSessionDataTask

URLSession

HTTP/HTTPS 를 통해 데이터를 주고받는 API를 제공하는 클래스

애플리케이션이 실행 중이지 않거나, 중단되어있는 동안 백그라운드 작업을 통해 데이터를 다운로드할 수 있음

URLSession API를 사용하기 위해서 애플리케이션은 세션을 생성함

➡️ 해당 세션은 관련된 데이터 전송작업 그룹을 조정

ex. 웹 브라우저의 경우 탭 당 하나의 세션을 만들 수 있음

각 세션 내에서 애플리케이션은 작업을 추가하고, 각 작업은 특정 URL에 대한 요청을 나타냄

 

 

Request

서버로 요청을 보낼 때 어떤 HTTP 메소드를 사용할 것인지, 캐싱 정책은 어떻게 할 것인지 등을 설정 

 

Response

URL 요청의 응답을 나타내는 객체

 

 

Session의 유형

URLSession API는 세가지 유형의 세션을 제공

➡️ 이 타입은 URLSession 객체가 소유한 configuration 프로퍼티 객체에 의해 결정됨

 init(configuration: URLSessionConfiguration)

1. 기본 세션 (Default Session)

URL 다운로드를 위한 다른 파운데이션 메소드와 유사하게 동작. 디스크에 저장하는 방식

 

2. 임시 세션 (Ephemeral Session)

기본 세션과 유사하지만, 디스크에 데이터를 저장하지 않고 메모리에 올려 세션과 연결

➡️ 애플리케이션이 세션을 만료하면 관련 데이터가 사라짐

 

3. 백그라운드 세션 (Background Session)

별도의 프로세스가 모든 데이터 전송을 처리한다는 점을 제외하고는 기본 세션과 유사

 

 

Task

URLSessionTask는 세션 작업 하나를 나타내는 추상 클래스

하나의 세션 내에서 URLSession 클래스는 데이터 작업, 업로드 작업, 다운로드 작업을 지원함

 

1. URLSessionDataTask

HTTP의 각종 메소드를 이용해 서버로부터 응답 데이터를 받아 Data 객체를 가져오는 작업 수행

 

2. URLSessionUploadTask

애플리케이션에서 웹 서버로 Data 객체 또는 파일 데이터를 업로드하는 작업 수행

주로 HTTP의 POST, PUT 메소드를 이용함

 

3. URLSessionDownloadTask

서버로부터 데이터를 다운로드 받아 파일의 형태로 저장하는 작업 수행

애플리케이션의 상태가 대기 중이거나, 실행 중이 아니라면 백그라운드에서도 다운로드 가능

 

데이터 작업 : 서버로부터 어떤 응답이라도 Data 객체 형태로 전달받을 때 사용

➡️ JSON, XML, HTML 데이터 등 단순한 데이터의 전송에 사용

 

업로드, 다운로드 작업 : 단순한 바이너리 파일 전달

➡️ 용량이 큰 파일의 경우 백그라운드에서도 전달할 수 있도록 업로드, 다운로드 작업 사용



 

 

URLSession - Foundation | Apple Developer Documentation

Empties all cookies, caches and credential stores, removes disk files, flushes in-progress downloads to disk, and ensures that future requests occur on a new socket.

developer.apple.com

 

 

[LECTURE] 1) URLSession과 URLSessionDataTask : edwith

URLSession과 URLSessionDataTask   HTTP/HTTPS를 통해 콘텐츠(데이터)를 주고받기 위해 API를 제공하는 클래스인 URLSession과 세션 작업을 ... - 부스트코스

www.edwith.org