본문 바로가기

# 02/iOS

[iOS] URLSession

반응형

Http Method

- GET : 클라이언트가 서버에 리소스를 요청할 때 사용

- POST : 클라이언트가 서버의 리소스를 새로 만들 때 사용

- PUT : 클라이언트가 서버의 리소스를 전체 수정 할 때 사용

- PATCH : 클라이언트가 서버의 리소스를 일부 수정 할 때 사용

- DELETE : 클라이언트가 서버의 리소스를 삭제 할 때 사용

- HEAD : 클라이언트가 서버의 정상 작동 여부를 확인할 때 사용

- OPTIONS : 클라이언트가 서버에서 해당 URL이 어떤 메소드를 지원하는지 확인 할 때 사용

- CONNECT : 클라이언트가 프록시를 통하여 서버와 SSL 통신을 하고자 할 때 사용

- TRACE : 클라이언트와 서버간 통신 관리 및 디버깅을 할 때 사용

 

 

 

HTTP Status

- 100번 대 Informational : 요청 정보를 처리 중 (거의 안쓴다고!)

- 200번 대 Success : 요청을 정상적으로 처리함

- 300번 대 Redirection : 요청을 완료하기 위해 추가 동작 필요

- 400번 대 Client Error : 서버가 요청을 이해하지 못함

- 500번 대 Server Error : 서버가 요청 처리 실패함

 

 

 

URLSession

특정한 url 을 이용하여 데이터를 다운로드하고 업로드 하기 위한 API

URLSeccionConfiguration 을 통해 URLSession 생성 된다.

URLSession 을 통해 한 개 이상의 URLSessionTask 를 생성 할 수 있다.

URLSessionTask 를 통해 실제 서버와 통신한다.

 

 

 

URLSession 종류

 

공유 세션 (Shared Session)

URLSession.shared()

싱글톤, 기본 요청을 하기위한 세션. 맞춤 설정은 할 수 없지만 쉽게 만들 수 있다.

 

 

기본 세션 (Default Session)

URLSession(configuration: .default)

공유 세션과 유사하지만 직접 원하는 설정을 할 수 있다.

캐시와 쿠키인증 등을 디스크에 저장한다.

순차적으로 데이터를 처리하기 위한 델리게이트를 지정할 수 있다.

 

 

임시 세션 (Ephemeral Session)

URLSession(configuration: .ephemeral)

공유 세션과 비슷하지만 캐시와 쿠키, 사용자 인증 정보를 디스크에 저장하지 않는다.

메모리에 올려서 세션을 연결한다. 세션 만료시 데이터가 사라진다.

 

 

백그라운드 세션 (Background Session)

URLSession(configuration: .background)

앱이 실행되지 않는 동안 백그라운드에서 컨텐츠 업로드 및 다운로드를 실행할 수 있다.

 

 

 

 

URLSessionTask 종류 

 

URLSessionDataTask - 데이터 객체를 사용하여 데이터를 요청하고 응답받는데 짧고 빈번하게 요청 하는 경우 사용된다.

URLSessionUploadTask  - 데이터 객체 또는 파일형태의 데이터를 업로드하는 작업 수행. 앱이 실행되지 않았을때 백그라운드 업로드를 지원한다.

URLSessionDownloadTask - 데이터를 다운받아 파일형태로 저장하는 작업 수행. 앱이 실행중이지 않을 때 백그라운드 다운로드를 지원한다.

URLSessionStreamTask - TCP / IP 연결을 생성할때 사용한다.

URLSessionWebSocketTask - 웹소켓 프로토콜 표준을 통해 통신한다.

 

 

 

URLSession Life Cycle

 

1. Session Configuration 을 결정하고, Session 을 생성

2. 통신할 URL과 Request 객체를 설정

3. 사용할 Task 를 결정하고 그에 맞는 Completion Handler 나 Delegate 메소드들을 작성

4. 해당 Task 를 실행

5. Task 완료 후 Completion Handler 클로저가 호출이 됨

반응형

'# 02 > iOS' 카테고리의 다른 글

[iOS] Geofence  (0) 2023.09.22
[iOS] 라이브러리 사용!  (0) 2022.10.26
[iOS] Alamofire  (0) 2022.10.26