[iOS] URL Session에 대해 알아보자
TIL(Today I Learned)
URL Session
- 특정한 url을 이용하여 데이터를 다운로드하고 업로드하기 위한 API
- 앱에서 서버와 통신하기 위한 API
URL Session Configuration
- URL 세션에 대한 동작 및 정책을 정의하는 구성 개체
- URL Session 인스턴스 생성
- URL Session 개체를 사용하여 데이터를 업로드, 다운로드할 때 사용할 동작 및 정책을 정의
- 타임아웃 시간 값, 캐싱 정책등을 설정
URL Session
- 관련된 네트워크 데이터 전송 작업 그룹을 조정하는 객체
URL Session 유형
- 공유 세션
- URLSession.Shared()
- 기본 요청하기 위한 세션
- 싱글톤으로 사용
- 맞춤 설정은 불가하지만 쉽게 만들어 사용 가능
- 기본 세션
- URLSession(configuratuin: .default)
- 공유 세션과 유사하게 작동하지만, 직접 원하는 설정이 가능
- 순차적으로 데이터를 처리하기 위한 Delegate 지정 가능
- 캐시와 쿠키, 사용자 인증 정보 등을 디스크에 저장
- 임시 세션
- URLSession(configuration: .ephemeral)
- 공유 세션과 유사하지만 캐시, 쿠키, 사용자 인증 정보등을 디스크에 저장 x
- 메모리에 올려 세션을 연결하고 세션 만료시 데이터가 사라짐
- 백그라운드 세션
- URLSession(configuration: .background)
- 앱이 실행되지 않는 동안 백그라운드에서 컨텐츠 업로드 및 다운로드
URL Session Task
- 세션 작업 하나를 나타내는 추상 클래스
- URLSessionDataTask
- 데이터 객체를 사용하여 데이트를 요청하고 응답 받음
- 주로 짧고 빈번하게 요청할 때 사용
- URLSessionUploadTask
- DataTask와 유사
- 데이터 객체 또는 파일 형태의 데이터를 업로드하는 작업을 수행
- 앱이 실행되지 않았을때 백그라운드 업로드를 지원
- URLSessionDownloadTask
- 데이터를 다운로드 받아서 파일 형태로 저장하는 작업을 수행
- 앱이 실행중이지 않은 때에는 백그라운드 다운로드 및 업로드 를 지원
- URLSessionStreamTask
- TCP/IP에 연결을 생성할 때 사용
- URLSessionWebSocketTask
- 웹소켓 프로토콜 표준을 통해 통신
- TCP 및 TLS를 통해 메시지를 교환
URL Session의 흐름
- Session configuration 결정
- Session 생성
- URL 생성
- Request 객체 생성
- 사용할 Task 결정
- Completion handler Or Delegate 사용 여부 결정
- Task 실행
- Completion handler Or Delegate 실행
댓글남기기