관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 1. 서버 - HTTP, RESTful API 본문

iOS 실전 (swift)/서버

[iOS - swift] 1. 서버 - HTTP, RESTful API

jake-kim 2020. 4. 23. 23:11

1. HTTP(HyperText Transfer Protocol) 구조

1) 종류

 - 라인 : 응답/요청 여부, 메시지 전송 방식, 상태 정보

 - 헤더 : 메시지 본문에 대한 메타 정보

 - 바디 : 보내고자 하는 메시지(데이터)

 

*실제 HTTP메시지

 

첫 줄 : 무조건 : 라인 (GET방식인 경우는 바디 포함)

이후 ~ '\n'까지 : 헤더

마지막줄 : 바디 (GET방식인 경우는 존재 x)

 

* GET방식은 라인에 데이터 삽입(~1024Byte)

 '?'를 기준으로 오른쪽 내용이 "query string"이며 세미콜론으로 구별

 여백이 있으면 이어서 라인 정보(예시 ... HTTP/1.1)

 

2) 라인

* 전송방식

웹 브라우저에서는 GET(요청), POST(ID없이 리소스 생성, 수정)만 존재하지만,

REST에서는 GET, POST, PUT(ID기반 리소스 생성, 수정), DELETE, HEAD(GET방식, 단 내용정보 없이 메타정보만 요청), OPTIONS(특정 URL에 대한 보조)존재

 

3) 헤더

- 도메인 및 포트번호

- Content-Type : 메시지 본문(바디)가 어떤 형식인지 선언

 (POST방식 : application/x-www.form-urlencoded)

 (JSON방식 : application/json)

 

4) 바디

*전송하고자 하는 값

1
 account=imustang%40naver.com&passwd=123&grant_type=password 
 

위와 같은 경우는

 account = imustang@naver.com

 passwd = 123

 grant_type = passe=word

 

※ 단, 문자열 중간에 &문자열을 넣고 싶다면 -> '%26' 으로 넣어야함

 

2. HTTPS (HTTP Security)

 - 공개키와 개인키 인증서를 이용하여 메시지를 암호화 한 후 전달함으로써 중간에서 열어볼 수 없도록 하는 것

※HTTPS통신은 유료(50만원~110만원)

 

3. RESTful API

1) REST(Representational State Transfer) : 네트워크 자원을 정의하고 자원에 대한 주소를 관리하는 방법 (데이터를 HTTP기반으로 간단히 주고 받기 위해 정의된 형식의 인터페이스)

 아래의 방법으로 CRUD진행하는 방법이 RESTful APU

 

  • Create : 생성(POST)
  • Read : 조회(GET)
  • Update : 수정(PUT)
  • Delete : 삭제(DELETE)
  • HEAD: header 정보 조회(HEAD)

 

 

2) RESTful : REST구조를 따라 구현된 시스템

 

3) RESTful API : RESTful 기반으로 서버에서 요청과 응답을 주고 받을 수 있도록 정의된 형식

 

4) JSON(JavaScript Object Notation) : 자바스크립트 언어에서 객체의 속성을 표현하기 위한 방버브로 사용하기 시작한 데이터 구조

 

 - 딕셔너리와 리스트 구조 (밑 링크 참조)

https://ios-development.tistory.com/26?category=889410

 

[iOS - swift] 8. 네트워크 통신 (Restful API, JSON, SOAP, XML)

1. 네트워크에 대한 기본 지식 1) 통신을 위한 프로그래밍 방향 - 소켓 방법 : 명시적으로 끊을 떄까지 지속해서 연결을 유지하는 방법 (TCP, UDP를 통한 화상통화, RPG 게임) - 비연결성 방법 : HTTP/HTTPS * 앞..

ios-development.tistory.com

 - NSDictionay, NSArray를 주로 쓰며 수정 불가하므로 NSMutableDictionary도 이용

 (아직 swift의 Dictionary보다 NSDictionary타입을 요구하는 메소드가 많기 때문에 NSDictionary사용)

 - 아이템 : JSON배열 내부에 들어가는 항목

Comments