[iOS] URL Loading System

RudinP·2024년 3월 12일
0

Study

목록 보기
198/227
post-thumbnail

URL Loading System

네트워크 통신에 사용하는 프레임워크와 API 집합
API 호출, 다운로드, 업로드에 관련된 기본적 네트워크 기능들이 구현되어 있음.

URLSession

Shared Session

  • 기본 설정을 사용해서 옵션 전달
  • 컴플리션 핸들러에서 응답 처리 방식
  • 대부분의 경우 사용

Default Session

  • 세션을 직접 구성 시 사용
  • 델리게이트를 구현해서 요청, 응답 세부 제어 가능
  • 서버에서 전달받은 응답은 기본적으로 디스크 캐시와 메모리 캐시에 저장

Ephemeral Session

  • 디폴트 세션과 비슷
  • 캐시나 쿠키, 인증정보를 디스크에 저장하지 않음
  • 프라이빗 브라우징 처럼 흔적을 남기지 않는 기능 구현 시 사용

Background Session

  • 백그라운드 접속 구현 시 사용
  • 스레드 아님.
  • 앱이 실행중이 아니더라도 데이터를 전송할 수 있다

Task

Data Task

  • 비교적 작은 데이터를 주고 받을 수 있음

Download/Upload Task

  • 비교적 큰 파일을 주고 받을 때 사용
  • 백그라운드 전송 지원

WebSocket Task

  • 웹소켓 프로토콜을 사용하여 패킷을 직접 주고받을 때 사용
  • 실시간 채팅, 다수의 접속을 빠르게 처리할 때 사용

Task 생성

  • 서버에서 응답이 올 때까지 기다리지 않음
  • 서버에서 응답이 오면 핸들러의 두번째 파라미터가 호출
  • 즉, 클로저는 서버에서 응답이 와야 실행된다.

  • 태스크를 만든다고 요청이 자동으로 전송되는 것이 아니다.
  • resume()을 호출해 요청을 보내야 한다.


http 상태 코드

1xx(조건부 응답)

  • 요청을 받았으며 작업을 계속한다

2xx(성공)

  • 요청을 성공적으로 받았으며 인식했고 수용했다
    • 200(성공)

3xx(리다이렉션)

  • 요청 완료를 위해 추가 작업 조치가 필요하다
    • URL이 새로운 위치로 이동했을 때 사용하는 코드

4xx(클라이언트 오류)

  • 요청의 문법이 잘못되었거나 요청을 처리할 수 없다.
    • 400(잘못된 요청): 요청을 만들 때 서버가 요구하는 방식으로 만들지 않음
    • 401(권한 없음): 로그인 실패 시 리턴 혹은 리소스 접근 권한 없을 시
    • 403(금지됨): 사용자가 리소스에 대한 필요 권한이 없을 때
    • 404(Not Found): 보통 잘못된 url 사용
    • 405(허용되지 않는 메소드): 요청 방식이 서버에서 요구하는 거랑 다를 때

5xx(서버 오류)

  • 서버가 명백히 유효한 요청에 대해 충족을 실패했다.
  • 서버 크래시
  • 503, 504 : 서버가 다운되었거나 디도스 공격 받을 시

정리

1. URL 객체 생성

2. URLSession 생성

3. dataTask 생성

4. resume()

5. dataTask의 클로저 실행

  1. 에러 발생 확인
  2. response 객체 다운캐스팅으로 상태 코드 200 확인
  3. data를 원하는 형태로 변환하여 처리
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글