21.08.26
공부한 것을 정리하는 용도의 글이므로 100% 정확하지 않을 수 있습니다.
참고용으로만 봐주시고, 내용이 부족하다고 느끼신다면 다른 글도 보시는 것이 좋습니다.
+ 틀린 부분, 수정해야 할 부분은 언제든지 피드백 주세요. 😊
by. ryalya
URLSession
은 기술적으로 HTTP / HTTPS 기반 요청을 처리하기 위한 API를 제공하는 클래스 및 클레스의 세트를 말한다.
앱과 서버는 데이터를 주고받기 위해 HTTP 프로토콜을 이용한다.
iOS에서 서버와 HTTP/HTTPS를 통해 통신(데이터를 주고받기)하기 위해 애플은 URLSession
이라는 API를 제공한다.
URLSession
은 iOS앱 통신에서 유명한 라이브러리인 Alamofire, SDWebImage 등의 기반이 되는 API이다.
URLSession
은 HTTP를 포함한 몇 가지 프로토콜을 지원하고, 인증, 쿠키 관리, 캐시 관리 등을 지원한다.
기본적으로 request, response 구조를 가지고 있다.
URLSessionConfiguration 결정
↓
Session 생성
↓
통신할 URL과 Request객체 설정
↓
사용할 Task를 결정하고, 그에 맞는 Completion Handler나 Delegate 메소드 작성
↓
Task를 실행
↓
Task 완료 후, Completion Handler가 실행됨.
URLSession을 생성하기 위해 필요한 요소
Configuration을 생성할 때는 URLSession 정책에 따라서 default, ephemeral, background 3가지 형태로 생성된다.
: 기본적인 통신 Session으로 디스크 기반 캐싱 지원
: 쿠키나 캐시를 저장하지 않는 정책을 가져갈 때 사용.
디스크에 어떤 데이터도 저장하지 않고, 메모리에 올려 세션과 연결한다.
따라서 앱 세션이 만료되면 세션 관련 데이터가 사라진다.
: 앱이 종료된 이후에도 통신이 이뤄지는 것을 지원하는 세션.
(앱이 백그라운드에 있는 상황에도 컨텐츠 다운로드, 업로드 할 때)
URLRequest를 통해서는 서버로 요청을 보낼 때 어떻게 데이터를 캐싱할 것인지, 어떤 HTTP 메소드를 사용할 것인지(Get, Post 등), 어떤 내용을 전송할 것인지 등을 설정할 수 있다.
Task 객체는 일반적으로 Session 객체가 서버로 요청을 보낸 후, 응답을 받을 때 URL 기반의 내용들을 받는(retrieve) 역할을 합니다. 3가지 종류의 Task가 지원됩니다.
(+ 예제 추가)