TIL(Today I Learned)

URL Session

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

URL Session의 흐름

  1. Session configuration 결정
  2. Session 생성
  3. URL 생성
  4. Request 객체 생성
  5. 사용할 Task 결정
  6. Completion handler Or Delegate 사용 여부 결정
  7. Task 실행
  8. Completion handler Or Delegate 실행

댓글남기기