SSAC iOS 앱 개발자 데뷔과정 - 18

Sangwon Shin·2021년 10월 27일
0

SSAC

목록 보기
15/19

📡 HTTP

우리는 지금까지 프로젝트 파일에 포함된 데이터들만을 뷰에 표현했습니다.

하지만 프로젝트 파일에 포함된 데이터들만을 이용해서 앱을 만들게 될 경우, 데이터의 추가, 삭제에 대한 실시간 대응이 불가능하다는 문제가 있습니다.

❗️새로운 데이터가 추가되면 해당 데이터를 추가해서 앱 업데이트 버전을 배포해야 되는 문제점이 있습니다.

그렇기 때문에 우리는 네트워크 통신을 통해서 데이터를 추가하고 삭제하는 과정이 필요합니다!

(CS를 공부하면서 더 자세하게 정리할 예정입니다.)


네트워크 통신에서 가장 대표적인 HTTP 통신 에 대해서 하나씩 정리해보겠습니다.
일반적으로 HTTP 통신, Socket 통신을 사용합니다.

  • Hyper Text Transfer Protocol
  • 인터넷에서 데이터를 주고 받을 수 있는 프로토콜

HTTP 통신과정을 간단하게 그림으로 표현 해보면 위와 같습니다.

앱에서 서버에 어떤 정보를 요청합니다. (통신을 위해서는 인증키가 필요합니다!)
이때 post, get, put, delete 와 같은 HTTP Method 를 통해서 요청합니다.

그리고, 우리가 요청한 데이터를 서버로 부터 json 또는 xml 형식으로 받게 됩니다.

HTTP 통신 의 경우, 클라이언트의 요청이 있을때만 서버가 응답하고 요청과 응답이 끝나면 연결이 끊어지게 됩니다.

그렇기 때문에 서버는 클라이언트의 정보를 기억하지 않아, 클라이언트를 식별할 수 없습니다.
같은 사용자를 구분하기 위해서 토큰, 세션을 사용!


간단한 예제를 통해서 다시 정리해보겠습니다.

1 ) GET

GET Method 는 위와 같이 URL 에 데이터를 포함해서 요청하는 형태로 주로 서버에 정보를 요청할 때 사용합니다.

(HTTP Header + Query String) 를 사용해서 정보 요청
❗️위와 같이 QueryString 에 API Key 와 같은 개인정보를 넣게되면 보안상 좋지 않음
❗️get 의 경우 일반적으로 Header 에 API Key 를 담음 (but, 그래도 보안문제 존재)


2 ) POST

POST Method 는 위와 같이 데이터를 HTTP body 에 포함시켜 정보를 전달합니다.
(Header 에 API key - value 가 저장되어 있습니다.)
URL 자체에 API Key 같은 값들이 포함되어 있지 않아, 최소한의 보안 구성이 되어있지만 물론, 유의미 하지는 않습니다.


3 ) xml & json

서버로부터, 우리가 요청한 데이터를 xml, json 형태로 받게 된다고 했는데 실제 값을 확인 해보면 위와 같습니다. (왼쪽: xml, 오른쪽: json)

앱에서는 일반적으로 용량이 작고 {키 : 데이터} 형태의 딕셔너리식 데이터 집합인 Json 을 더 많이 사용합니다.

❗️서버에서 Json 형태로 요청한 자료를 보내줄 때, 어떤 환경을 기준으로 보내주게 될까요?

실제 그 값을 C, Python, Swift 등 다양한 환경에서 확인할 수 있기 때문에 서버에서는 문자열로 데이터를 보내주게 됩니다.

우리는 해당 데이터를 Swift 에서 인식할 수 있게 변환해주는 과정이 필요합니다.
(이러한 과정을 Serialization 이라고 합니다.)

Swift 에서는 Json Serialization 이라는 클래스를 이용하거나 Codable 프로토콜을 이용 할 수 있지만 우리는 익숙해질 때 까지 SwiftyJSON 라이브러리를 사용할 예정입니다.


🏷 P.S.

과제를 끝내면 하루가 삭제되는 삶이 반복되면서 블로그 정리가 밀렸습니다 ㅠㅠ

빨리빨리 까먹기 전에 블로그에 정리하고, 깃허브에도 코드 정리해서 올리도록 하겠습니다!!

  • <10 / 25>

Textfield 에 작성된 숫자를 기준으로 PickerView 도 이동하도록 구현하고 싶었서 관련 자료들을 주말에 찾아볼 예정입니다.

profile
개발자가 되고싶어요

0개의 댓글