TIL67 ✨

YaR Lab·2023년 7월 25일
0

TIL✨

목록 보기
55/135
post-thumbnail

🗓️23.07.25

Fetching Website Data into Memory

  • URL 세션에서 데이터 작업(data task)을 생성
  • URLSessionDataTask
  • URLSessionDownloadTask
  • 필요이상의 세션을 만들지 마라
  • dataTask() 메서드 중 하나를 사용하여 데이터 작업(data task)을 생성
  • 작업은 일시 중단된 상태로 생성되며, resume()을 호출하여 시작

완료핸들러에서 해야 할 작업

  • 오류 매개변수가 nil인지 확인합니다. 만약 그렇지 않다면, 전송 오류가 발생한 것이므로 오류를 처리하고 종료
  • 응답 매개변수를 확인하여 상태 코드가 성공을 나타내고 MIME 유형이 기대하는 값인지 확인합니다. 그렇지 않다면, 서버 오류를 처리하고 종료
  • 필요한 대로 데이터 인스턴스를 사용

data task

  • 주로 HTTP GET 요청과 함께 사용
  • URLSessionDataTask 클래스를 사용하여 데이터 작업을 생성하면, 앱은 주어진 URL로 서버에 요청을 보내고, 서버에서 응답으로 데이터를 수신함
  • 데이터 작업은 두 가지 주요 요소로 구성
  • 요청 Request: URL과 관련된 요청을 생성함, 이 요청은 서버에 데이터를 요청하는 방법과 관련된 설정을 포함함, 예를 들어, HTTP 메서드(GET, POST, 등), HTTP 헤더, 매개변수, 인증 정보 등이 요청에 포함됨
  • 응답 Response: 서버로부터 수신된 데이터 및 관련된 응답 메타데이터를 처리, 이 응답에는 서버의 상태 코드, HTTP 헤더, MIME 유형 등이 포함됨

    메타데이터

    • 다른 데이터에 대한 정보를 설명하는 데이터
    • 데이터에 대한 데이터

    MIME 유형

    • 데이터의 종류를 나타내는 식별자

    HTTP 헤더

    • HTTP 헤더는 HTTP 요청 및 응답에 대한 추가 정보를 전달하는 데 사용되는 메타데이터
  • 데이터 작업은 비동기적으로 실행되며, 작업이 완료될 때까지 앱의 주 실행 스레드를 차단하지 않고 계속해서 다른 작업을 수행할 수 있음
  • 데이터 작업의 결과는 클로저(완료 핸들러)를 통해 처리되며, 이를 통해 서버 응답 데이터를 가져와 앱에서 사용

HTTPURLResponse

주요 프로퍼티:

  • statusCode: 서버의 상태 코드를 나타내는 정수 값입니다. 주로 클라이언트 요청에 대한 처리 상태를 나타냅니다.
  • allHeaderFields: 응답에 포함된 모든 헤더 필드를 딕셔너리 형태로 반환합니다. 각 헤더 필드에는 키-값 쌍으로 구성된 정보가 포함되어 있습니다.
  • mimeType: 응답 데이터의 MIME 유형을 나타냅니다. 예를 들어, "text/html", "application/json" 등이 가능합니다.

WKWebView(WebKitWebView)

웹 뷰(Web View) 컴포넌트로, 웹 페이지를 표시하고 웹 기반 콘텐츠를 로드하는 데 사용되는 객체

  • 성능: WKWebView는 Safari 웹 브라우저와 동일한 웹 렌더링 엔진을 사용하므로, 더 빠르고 효율적으로 웹 콘텐츠를 로드하고 렌더링할 수 있습니다.
  • 비동기 처리: WKWebView는 비동기 처리를 지원하여 웹 페이지 로딩 중에 앱이 블로킹되지 않고 동작할 수 있도록 합니다.
  • JavaScript와의 상호작용: WKWebView는 JavaScript와의 상호작용을 용이하게 지원합니다. 웹 페이지의 JavaScript 함수를 호출하고, JavaScript에서 iOS 앱의 메서드를 호출할 수 있습니다.
  • 네이티브 기능 사용: WKWebView는 네이티브 기능을 사용하여 웹 페이지와 상호작용할 수 있는 더 많은 기능을 제공합니다.
  • 레이아웃 제어: WKWebView는 웹 뷰 내에서 콘텐츠의 레이아웃을 더욱 세밀하게 제어할 수 있습니다.

완료 핸들러(Completion Handler)

  • 비동기 작업이 완료되었을 때 호출되는 콜백 함수
  • 완료 핸들러는 대개 클로저(Closure)로 구현되며, 함수의 매개변수로 전달되거나, 메서드의 인자로 전달되는 등의 방법으로 사용됨
  • 완료 핸들러를 통해 비동기 작업의 결과, 성공 또는 실패 여부, 발생한 오류 등을 전달하여 알림

session's Delegate

  • 대리자 접근 방식을 사용할 때는 URLSession 클래스의 공유 인스턴스 대신에 직접 URLSession 인스턴스를 생성해야 함

lazy

  • 해당 프로퍼티가 처음으로 접근될 때까지 초기화를 지연시키는 기능을 제공
  • 항상 var 키워드로 선언되어야 함
  • 처음 접근 시점에 초기화가 이루어지며, 해당 초기화는 한 번만 수행됨, 따라서 여러 스레드에서 동시에 접근하더라도, 초기화가 한 번만 발생하고 스레드 안전하게 작동함

URLRequest

  • 서버로 보내는 네트워크 요청을 나타내는 객체
  • URL과 HTTP 메서드(GET, POST, PUT, DELETE 등)를 포함하여 네트워크 요청과 관련된 정보를 설정할 수 있음
  • HTTP 헤더나 HTTP 바디와 같은 요청에 필요한 데이터를 설정하여 서버로 데이터를 전송할 수 있음
  • URLSession을 통해 서버로 요청을 보내고, 서버로부터 응답을 받아올 수 있음

URLComponents

  • URL의 구성 요소를 분리하고 조합하는 데 사용되는 객체
  • URLComponents를 사용하여 URL의 스키마, 호스트, 경로, 쿼리 파라미터 등을 추출하거나 새로운 URL을 조합함
  • URLComponents는 주로 URL을 생성하거나 파싱할 때 사용되며, URL의 각 부분을 쉽게 접근하고 조작할 수 있도록 함

scheme

  • URL의 가장 앞에 위치하는 프로토콜(Protocol)을 나타내는 부분

0개의 댓글