URLSessoion

Judy·2022년 7월 30일
0

iOS

목록 보기
17/28

URLSession

1. URLSession

서버와 통신하기 위한 API

  • HTTP를 포함한 여러 프로토콜을 지원하고, 인증, 쿠키 관리, 캐시 관리 등을 지원
  • HTTP 통신과 마찬가지로 Request, Response 구조를 가짐

Request

  1. URL 객체를 통해 직접 통신하는 방식
  2. URLRequest 객체를 만들어 옵션을 설정하여 통신하는 방식

Response

  1. 설정된 TaskConpletion Handler 형태롤 받는 방식
  2. URLSessionDelegate를 통해 지정된 메서드를 호출하는 방식

2. URLSession의 기본

URLSession의 라이프사이클

  1. Session의 configuration 결정 및 Session 생성
  2. 통신할 URLRequest 객체 설정
  3. Task를 결정하고 그에 맞는 Completion Handler 또는 Delegate 메서드 작성
  4. Task를 실행
  5. 완료 후 Completion Handler(또는 Delegate 메서드) 실행

Session의 종류

  • Default Session : 기본적인 세션, 디스크 기반 캐싱 지원
  • Ephemeral Session : 데이터를 저장하지 아는 세션
  • Background Seesion : 앱이 종료된 후에도 통신이 이뤄지는 세션

Request 설정

  • 어떻게 데이터를 캐싱할지
  • 어떤 HTTP 메서드를 사용할지 (GET, POST 등)
  • 어떤 내용을 전송할 것인지

3. Task

Session 객체가 서버로 요청을 보낸 후, URL 기반의 응답을 받는(retrive) 역할


URLSessionDataTask

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


Task의 종류

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

URLSession - dataTask

  • URLSessionr과 같은 네트워킹용 API 보통 앱 전역에서 사용하므로 viewController 보단 클래스를 만들어 static 메서드로 사용하는 것이 좋음

dataTask 메서드

func dataTask(with url: URL) -> URLSessionDataTask

URL에 데이터를 요청하는 데이터 작업 객체를 생성

func dataTask(with request: URLRequest) -> URLSessionDataTask

URLRequest 객체를 기반으로 URL에 데이터를 요청하는 데이터 작업 객체를 생성

func dataTask(with url: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask

URL에 데이터를 요청하고 요청에 대한 응답을 처리할 완료 핸들러(Completion Handler)를 갖는 데이터 작업 객체를 생성

func dataTask(with request: URLRequest, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask

URLRequest 객체를 기반으로 URL에 데이터를 요청하고 요청에 대한 응답을 처리할 완료 핸들러(Completion Handler)를 갖는 데이터 작업 객체를 생성


iOS URLSession 이해하기
URLSession과 URLSessionDataTask

profile
iOS Developer

0개의 댓글