Computer Science

[iOS] iOS에서의 네트워크(Networking in iOS) - 이준원 강사님

TDCIAN 2021. 1. 21. 11:12

* 이 내용은 제가 패스캠퍼스에서 이준원 강사님께서 진행하신 iOS 강의를 보고 공부하기 위해 만든 자료입니다.

이준원 강사님의 강의를 수강하고 싶으시다면 이 링크(www.fastcampus.co.kr/dev_online_iosapp)로 방문해 보세요(당연히 광고 아닙니다!).

 

 

네트워킹이란 서버와 앱 간의 데이터를 주고 받는 것을 말합니다.

이 때 보통 HTTP라는 방법을 통해 대화를 하게 됩니다.

HTTP라는 약속을 통해서 REST한 방식으로 JSON 데이터를 주고받는다고 생각하시면 됩니다.

 

HTTP란 통신규약으로서 서버와 모바일(클라이언트) 사이에서 어떻게 메세지를 주고 받을까에 대한 규칙입니다.

 

모바일에서는 서버에게 리퀘스트를 보내고

 

서버는 모바일 쪽으로 리스폰스를 보냅니다

 

 

1. POST

 - 올려주는 것

2. GET

 - 데이터를 받아오는 것

3. PUT

 - 올려진 데이터를 바꾸는 것

4. DELETE

 - 올라간 데이터를 지우는 것

 

 

주소창에 URL을 입력하고 엔터를 치는 순간 서버에다가 HTTP 리퀘스트를 보내는 것입니다

 

URL이라는 것은 해당하는 도큐먼트의 주소입니다. 

 

 

요청 보낼 때 내부를 좀 더 자세히 살펴보면,

리퀘스트를 보낼 때는 크게 헤더와 바디가 있습니다. 헤더와 바디에 요청을 적어 서버에 넘기게 됩니다.

 

 

응답 데이터의 경우에도 헤더와 바디로 나누어져서 내려옵니다.

헤더에는 아주 중요한 정보인 상태코드가 내려옵니다.

바디에는 필요한 HTML이 모두 내려옵니다.

브라우저가 이것을 렌더링을 해서 우리에게 보여줍니다.

 

 

컨텐트 타입에는 어떤 종류의 컨텐츠가 내려온 것인지 보여줍니다.

 

컨텐트의 종류에는 위처럼 다양한 것들이 있습니다.

 

이젠 HTTP를 이용해 라이브 스트리밍을 송출할 수도 있게 되었습니다.

 

그렇다면 이 과정이 iOS에서 이 HTTP 통신이 어떻게 이루어지는지 확인해봅시다.

 

URL Session을 가지고 HTTP를 통해서 앱과 서버 간에 데이터를 주고받을 수 있습니다.

 

URL Session을 만들 때는 URL Session Configuration을 가지고 URL Session을 생성합니다.

그렇게 만들어진 URL Session은 여러 개의 URL Session Task를 만들 수 있습니다.

 

URL Session Task를 통해서 서버와 통신을 하게 되는 것입니다.

URL Session Task가 서버와 통신을 하는 동안 중간 중간 필요한 과정을 확인해보려면 Delegate를 사용해서 확인할 수 있습니다.

이 때 Delegate는 필수는 아닙니다.

 

URLSessionConfiguration을 생성할 때는 URLSession의 정책에 따라서 Default와 Ephemeral(이퍼미럴 이라고 읽습니다), Background 타입으로 만들 수 있습니다.

- 기본 통신용으로 Default를 사용합니다.

- Ephemeral은 쿠키나 캐시를 저장하지 않도록 정책을 가져갈 때 사용(프라이빗 모드)합니다.

- Background 세션은 다운로드나 업로드를 할 때 사용합니다.