URLSession

Brad·2022년 7월 12일
0

URL이란??

URL(Uniform Resource Locator)

→ 인터넷상의 파일 위치를 식별하는 방법

URLSession

→ iOS앱에서 서버와 통신하기 위해 애플은 URLSession 이라는 API를 제공. 서버와의 데이터 교류를 위해서는 필수적으로 알아야 하는 API 입니다. HTTP를 포함한 몇 가지 프로토콜을 지원하고, 인증, 쿠키 관리, 캐시 관리 등을 지원

URLSession의 Request와 Response

→ 다른 HTTP 통신과 마찬가지로 RequestResponse 를 기본 구조로 가지고 있음.

Request
URL 객체를 통해 직접 통신하는 형태와 URLRequest 객체를 만들어서 옵션을 설정하여 통신하는 형태가 있음.

Response
설정된 TaskCompletion Handler 형태로 response를 받거나, URLSessionDelegate를 호출하는 형태로 reponse를 받는 형태가 있음

일반적으로 간단한 reponse를 작성할 때는 Completion Handler를 사용하지만, 앱이 background 상태로 들어갈 때에도 파일 다운로드를 지원하도록 설정하거나, 인증과 캐싱을 default 옵션으로 사용하지 않는 상황과 같은 경우 Delegate 패턴을 사용해야 함

URLSession 순서

  1. Session 생성
  2. URL과 Request 객체 설정
  3. 사용할 Task 설정하고 Completion HandlerDelegate 메소드들을 작성
  4. Task 실행
  5. Task 완료 후 `Completion Handler 실행

Session

URLSession 3가지 종류의 Session 지원

  • Default Session - 기본적인 Session으로 디스크 기반 캐싱을 지원
  • Ephemeral Session - 어떠한 데이터도 저장하지 않는 형태의 세션
  • Background Session - 앱이 종료된 이후에도 통신이 이뤄지는 것을 지원하는 세션

Request

URLRequest를 통해서는 서버로 요청할 때 어떻게 데이터를 캐싱할 것인지, 어떤 HTTP 메소드(GET, POST, PUSH, DEL 등) 사용할 것인지 설정

Task

Task 객체는 일반적으로 Session 객체가 서버로 요청을 보낸 후, 응답을 받았을 때 URL 기반의 내용들을 받는(recevice) 역활을 함. 3가지 종류의 Task가 지원 됩니다.

  • Data Task - Data 객체를 통해 데이터를 주고받는 Task
  • Download Task - data를 파일의 형태로 전환 후 다운 받는 Task, 백그라운드 다운로드 지원
  • Upload Task - data를 파일의 형태로 전환 후 업로드하는 Task

URLSession dataTask 사용하기

  • URLSession과 같은 네트워킹용 API는 일반적으로 앱 전역에서 사용 됩니다. 그렇기 때문에 ViewController에 메소드를 작성하기보다는 하나의 모듈(class) 만들고 그 안에 static 함수들을 만들어 사용하는 것이 좋습니다.

참고자료

profile
iOS 개발자가 되고 싶은 브래드 입니다.

0개의 댓글