SeSAC_iOS_Day 59 | TIL

린다·2021년 12월 21일
0

SSAC_iOS_Dev

목록 보기
29/33
post-thumbnail

📂 URLSession

✔️ URLSession이란?

  • 네트워킹에 대한 프레임워크 (ex. UI에 대한 프레임워크: UIKit)
  • Alamofire와 Kingfisher가 대표적인 URLSession을 기반으로 구현된 라이브러리
  • 클라이언트와 서버가 어떤 데이터, 어떤 HTTP Method로 주고받을지 설정할 수 있도록 하는 API를 제공해주고 있음
  • 부가적으로 time out, 캐싱, 백그라운드 정보 전송 등 다양한 속성들을 원하는대로 설정하여 네트워킹을 할 수 있음
  • 기본적인 설정을 그대로 사용하여 네트워킹을 할때는 Shared Session을 사용해도 되고 추가적인 옵션을 설정하고 싶으면 SessionConfiguration을 통해 구성할 수 있음(Default, Ephemeral, Background)

☑️ 캐시

  • 매번 네트워킹하는 것이 부담스러울 때 기기상에서 어느정도 데이터를 확보하고 있는 개념

☑️ time out

  • 네트워크 통신할 때 대기하는 클라이언트가 늘어나면 요청 후 기다리는 시간이 길어짐
  • 응답이 오기전까지 기다리거나 중간 중간 계속 요청했으나 대기하는 시간이 일정 시간 이상으로 늘어나면 에러가 나지 않아도 time out을 보여줌

📁 URLSession의 기본 컨셉
1. Session Configuration을 결정하고 Session을 생성
2. 통신할 URL과 Request 객체를 설정
3. 사용할 Task를 결정하고 그에 맞는 Completion Handler나 Delegate 메소드들을 작성
4. 해당 Task 실행
5. Task 완료 후 Completion Handler 실행됨

✔️ 구성 요소

URLSession -> task -> request -> response

☑️ URLSession

  • 와이파이가 아닌 셀룰러 상태에서 통신할건지? / 캐시 만료 / 컨텐츠에 대한 지속적인 확인 등 옵션을 추가할 수 있음
  • URLSessionConfiguration에는 Shared, Default, Ephemeral, Background가 있음
  • Shared Session: 싱글턴 패턴, 커스터마이징이 불가능, 백그라운드 기능 제공 안함
  • Ephemeral: 시크릿 모드

☑️ Task

  • URLSession을 통해 생성되는 개별 요청
  • 백그라운드 요청할건지 / 간단한 데이터를 다운받을건지 / 어떤 테스크 기반으로 요청할지 / 어떤 HTTP Method를 사용할지 / 어떤 데이터를 받을지 등에 대한 설정을 하는 단계(전달방식, 구현목적)
  • Data, Upload, Download, Stream(WebSocket) 등과 같은 종류가 있다.
  • Task 생성 후 .resume() 필수!

☑️ Request

  • 요청 정보를 표현하는 객체
  • URL, URLRequest

☑️ Response

  • 응답, 받은 응답을 처리해야함
  • Completion Handler, Delegate를 통해 처리할 수 있으며 이 두 가지 방법을 혼용하는 것은 불가능

0개의 댓글