[iOS] - URLSession, HTTP

sun02·2022년 1월 9일
0

iOS

목록 보기
8/27

Protocol이란?

: 정보들을 주고받을 때 지켜야하는 인터넷 상의 규약

HTTP (=Hyper Text Transfer Protocol)이란?

Hyper Text(HTML문서)를 전송하기 위해 지켜야하는 프로토콜

client -----(request) ---> Web server
client <---(response) --- WebServer

=> HTTP는 기본적으로 서버와 클라이언트가 계속해서 연결되어있지 않고, 서버는 response를 한 뒤 곧바로 연결을 종료시킵니다.

- HTTP 패킷 => Header + body

  • header : 보내는 사람, 받는 사람의 주소, 패킷의 생명 시간
  • body : 전하고자 하는 실제 내용

- HTTP Method

1) GET : 데이터 가져오기
2) POST : 새로운 데이터 추가하기
3) PUT : 기존의 데이터 수정(업데이트)
4) PATCH : 기존의 데이터 일부 수정
5) DELETE : 데이터 삭제
6) HEAD : GET과 동일하지만 메시지의 헤더만 반환
7) OPTIONS : 해당 URL이 어떤 메소드를 지원하는지 확인
8) CONNECT : 프록시를 통하여 서버와 SSL 통신을 하고자 할 때 사용
9) TRACE : 통신 관리 및 디버깅, 원격 서버 테스트용 메시지 확인

URLSession

애플에서 HTTP 통신을 위해 만든 것으로 특정 url을 이용해서 데이터를 다운로드하고 업로드하기 위해 사용하는 API 입니다.

URLSession은 URLSessionConfiguration과 URLSessionTask로 구성되어있습니다.

  • URLSessionConfiguration -> URLSession 생성
  • URLSessionTask -> 실제 서버와 통신 담당

- URLSession의 종류

  • 공유 세션 : URLSession.share()
    => singleton, 기본요청을 하기 위한 세션, 맞춤설정은 어렵지만 쉽게 생성하여 사용 가능

  • 기본 세션 : URLSession(configuration: .default)
    => 공유 세션과 유사하게 작동하지만 직접 원하는 설정 가능, 캐시 쿠킹 정보 저장함, 순차적인 데이터 처리를 위한 delegate 설정 가능

  • 임시 세션 : URLSession(configuration: .ephemeral)
    => 공유 세션과 유사하지만 캐시, 쿠키, 사용자 인증 정보를 디스크에 저장하지 않음, 세션 만료시 데이터 사라짐

  • 백그라운드 세션 : URLSession(configuration: .background)
    => 앱이 실행되지 않는 동안 백그라운드에서 컨텐츠 업로드, 다운로드 실행 가능

- URLSessionTask 종류

  • URLSessionDataTask
    : 데이터 객체를 사용하여 데이터를 요청하고 응답받음. 주로 짧고 빈번하게 요청하는 경우에 사용됨
  • URLSessionUploadTask
    : 데이터 객체나 파일 형태의 데이터를 업로드 함. 앱이 실행되지 않을 때 백그라운드 업로드 지원함
  • URLSessionDownloadTask
    : 데이터를 다운받아 파일 형태로 저장함. 앱이 실행되지 않을 때 백그라운드 다운로드 지원함
  • URLSessionStreamTask
    : TCP/IP 연결을 생성할 때 사용됨
  • URLSessionWebSocketTask
    : 웹 소켓 프로토콜 표준을 통해 통신

- URLSession Life Cycle

  1. session configuration 결정, session 생성
  2. 통신할 URL, Request 객체 설정
  3. 사용할 task 결정, 그에 맞는 completionHandler나 delegate 메소드 작성
  4. task 실행, task 완료 후 completion Handler 클로저 호출

0개의 댓글