[ios_Swift] URLSession

이시영·2023년 9월 19일

URLSession 이란?

URLSession은 네트워크 작업을 수행하는 데 사용되는 기본적인 클래스로서 URL로 표시된 엔드포인트에서 데이터를 다운로드하고 엔드포인트에 데이터를 업로드하기 위한 API를 제공합니다.
즉 URLSession은 웹 서버와 데이터를 주고받는 HTTP 요청과 응답을 처리하며, 웹 서비스와 통신하고 데이터를 다운로드 또는 업로드하는 등의 작업을 수행할 때 주로 사용됩니다.


📌 URLSession 의 기능

  • HTTP 요청 보내기: URLSession을 사용하여 HTTP GET, POST, PUT, DELETE 등의 메소드를 사용하여 서버에 요청을 보낼 수 있습니다.

  • 비동기 네트워크 요청: 네트워크 요청은 주로 비동기적으로 처리되며, 앱의 주 스레드를 차단하지 않고 네트워크 작업을 수행할 수 있습니다.

  • 데이터 다운로드 및 업로드: URLSession을 사용하여 원격 서버로부터 데이터를 다운로드하거나 업로드할 수 있습니다. 이를 통해 이미지, 파일, JSON 데이터 등을 전송하고 수신할 수 있습니다.

  • 세션 관리: URLSession을 사용하여 여러 네트워크 작업을 그룹화하고 관리할 수 있습니다. 또한 세션 구성을 사용하여 타임아웃, 캐시 처리, 쿠키 관리 등을 설정할 수 있습니다.

  • 백그라운드 작업: URLSession은 앱이 백그라운드에서 실행 중일 때도 네트워크 작업을 지원하며, 이를 통해 데이터 동기화 및 백그라운드 업데이트를 처리할 수 있습니다.


Swift의 URLSession은 iOS, macOS, watchOS, tvOS 등 다양한 Apple 플랫폼에서 사용할 수 있으며, 네트워크 통신을 쉽게 구현하고 관리할 수 있는 강력한 도구입니다. 이를 통해 앱은 웹 서버와 데이터를 안전하게 교환하고 다양한 기능을 제공할 수 있습니다.




📌 URLSession 의 구성요소들

URLSession을 주로 구성하는 요소들은 다음과 같습니다.

  1. URL (Uniform Resource Locator):
    URLSession의 첫 번째 구성 요소는 요청을 보낼 웹 서버 또는 리소스의 URL입니다. URL은 웹 서버의 주소와 포트, 경로 및 쿼리 문자열을 포함하여 원격 리소스를 고유하게 식별합니다.

  2. URLRequest:
    URLSession을 사용하여 네트워크 요청을 보낼 때, URLRequest 객체를 생성하여 요청에 대한 세부 정보를 설정합니다. 이 객체에는 요청 메소드(GET, POST, PUT 등), 헤더, 요청 본문 데이터 등이 포함됩니다.

  3. URLSessionConfiguration:
    URLSessionConfiguration은 URLSession의 동작을 제어하는 구성 객체입니다. 이 객체를 사용하여 세션의 동작을 조정할 수 있으며, 예를 들어 타임아웃, 캐시 정책, 쿠키 관리 등을 설정할 수 있습니다.

  4. URLSession:
    URLSession은 네트워크 작업을 수행하는 주요 클래스입니다. URLSession은 위에서 구성한 URL 및 URLSessionConfiguration을 사용하여 네트워크 요청을 서버로 보내고 응답을 받아오는 역할을 합니다.

  5. URLSessionTask:
    URLSessionTask는 실제로 네트워크 작업을 나타내는 객체입니다. URLSession은 다양한 유형의 URLSessionTask를 생성할 수 있으며, 주로 데이터 다운로드, 데이터 업로드, 백그라운드 작업 등을 처리합니다.

  6. URLSessionDelegate:
    URLSessionDelegate는 네트워크 작업의 진행 상황 및 완료 상태를 모니터링하고 처리하기 위한 프로토콜입니다. URLSessionDelegate를 채택하여 네트워크 응답을 처리하고 오류 처리를 수행할 수 있습니다.
    이러한 구성 요소들은 URLSession을 통해 원격 서버와의 통신을 구성하고 관리하는 데 사용됩니다. URLSession을 적절하게 설정하고 URLRequest를 생성하여 서버에 요청을 보내며, URLSessionTask를 사용하여 비동기적으로 네트워크 작업을 수행합니다. 이를 통해 데이터를 다운로드하거나 업로드하고, 웹 서버와 효율적으로 통신할 수 있습니다.




📌 URLSession 의 작업순서

  1. URL 생성: URLSession을 사용하여 네트워크 요청을 보낼 URL을 생성합니다. 이 URL은 웹 서버의 엔드포인트를 나타냅니다.

  2. URLRequest 생성: URL을 기반으로 URLRequest 객체를 생성합니다. 이 객체에는 요청 메소드(GET, POST 등), 헤더, 요청 본문 데이터 등 요청에 필요한 모든 정보가 포함됩니다.

  3. URLSession 설정: URLSession을 생성하고 필요한 설정을 구성합니다. URLSessionConfiguration을 사용하여 세션의 동작을 제어할 수 있습니다. 예를 들어, 타임아웃, 캐시 정책, 쿠키 관리 등을 설정할 수 있습니다.

  4. 네트워크 작업 수행: URLSession을 사용하여 URLRequest를 서버로 보내고 응답을 기다립니다. 네트워크 작업은 주로 비동기로 실행되므로, 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있습니다.

  5. 응답 처리: 서버로부터 받은 응답 데이터를 처리합니다. 이 단계에서는 응답의 상태 코드를 확인하고, 데이터를 파싱하거나 화면에 표시하는 등의 작업을 수행합니다.

  6. 에러 처리: 네트워크 작업 중에 오류가 발생할 수 있으므로, 에러 처리를 수행합니다. URLSession은 네트워크 관련 오류를 NSError 객체로 반환하므로, 이를 확인하고 적절한 조치를 취해야 합니다.

  7. 정리 및 마무리: 네트워크 작업이 완료되면 URLSession을 정리하고 메모리 누수를 방지하기 위해 모든 리소스를 해제합니다.




URLSession

0개의 댓글