티스토리 뷰
HTTP 란 ?
HyperText Transfer Protocol 의 약자이고, 인터넷 상에서 HTML 문서와 같은 데이터를 주고 받기 위한 프로토콜(규약)이다.
서버-클라이언트 모델을 따르는 애플리케이션 레벨의 프로토콜로 TCP/IP(OSI 4계층) 위에서 작동한다.
HTML 뿐만아니라 이미지, 동영상, 오디오, 텍스트 문서 등 종류를 가리지 않고 전송 가능하다.
이름 그대로 하이퍼텍스트를 기반으로 데이터를 전송하겠다는 말이다. 간단히 말하면 링크기반으로 데이터에 접속하겠다는 의미이다.
*Protocol(프로토콜)이라는 것은 일종의 대화 규칙이다.
즉, 어떤 형식으로 데이터를 주고받을 것인지 정의한 통신 규약을 말한다.
그런데 누군가가 네트워크에서 신호를 가로채어 본다면 내용이 노출될 수 있다. HTTP도 복잡한 바이너리 데이터가 아니라 그냥 텍스트 메시지를 주고 받기 때문이다.
이런 보안상의 문제를 해결해주는 프로토콜이 HTTPS이다.
HTTPS 란
HTTP + Secure Socket(보안 통신) 의 약자로 모든 통신 내용을 암호화하는 것이다.
공개키 암호화 방식을 사용하는데, 이후 추가적으로 다루도록 하겠다.
작동방식
- HTTP는 서버/클라이언트 모델 방식에 따르며 클라이언트 요청(request)를 보내면 서버는 요청을 처리해 응답(response)한다.
- 기본적으로 상태 정보를 유지하지 않고(stateless), 통신이 끝나면 연결을 끊는(connectionless) 특징을 가진다.
그래서 쿠키와 세션을 이용하여 통신 데이터나 상태를 유지하는데, 관련하여 따로 정리한 글이 있으니 참고 부탁드립니다.
2018/12/19 - [개발/이론] - [HTTP] 쿠키/세션/캐시의 차이점은?
....? 근데 이거 완전 RESTful 설명 아니야
REST (Representatilnal State Transfer)
HTTP를 기반으로 XML 또는 JSON을 이용하여 서버-클라이언트가 데이터를 주고받는 통신 방식이다.
웹의 장점을 최대한 활용할 수 있는 아키텍처로 개발되었으며, HTTP의 메소드를 그대로 사용한다.
REST API 는 리소스(자원), 메서드(행위), 메세지(표현) 세가지로 구성된다.
자원기반설계 ROA(Resource Oriented Architecture) 를 따르므로, 자원을 중심으로, 자원을 처리하기 위한 메서드, 자원을 처리하는 처리 내용으로 구성되는 것이다.
(1) Resource (자원) - URI
- 클라이언트는 URI를 통하여 서버에 해당 자원의 상태(정보)에 대한 조작을 요청한다.
- 자원은 서버에 존재하며, 모든 자원에는 고유한 ID가 존재한다. 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다.
- URI에는 자원의 명칭(주로 명사)가 들어가야 한다. 자원을 조작하는 "행위"에 대한 표현이 들어가서는 안된다.
EX )
GET /members/delete/1 (X) - 중간에 조작 행위가 포함됨 |
=> DELETE /members/1 (O) |
(2) 행위 (Verb) - HTTP Method
- HTTP 프로토콜의 메서드를 사용한다.
- HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공한다.
(3) 표현(Representation of Resource)
- 자원에 대한 행위의 '내용'을 정의한다.
- Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다.
(JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.)
참조
http://blog.giftbot.kr/network/Understanding-Rest-API/
http://arclab.tistory.com/120
https://meetup.toast.com/posts/92
http://kmj1107.tistory.com/entry/Http-vs-Https-Http와-Https의-차이점
http://haah.kr/2017/06/12/rest-the-big-lie/
'개발 > 이론' 카테고리의 다른 글
[디자인패턴] 팩토리 패턴(Factory Pattern) (0) | 2019.01.07 |
---|---|
[ASP.NET] 파일 형식 등 기본 사항 (0) | 2019.01.02 |
[HTTP] 쿠키/세션/캐시의 차이점은? (3) | 2018.12.19 |
[디자인패턴] 싱글톤(Singleton) 패턴 (0) | 2018.12.19 |
[객체지향] SOLID 원칙 (0) | 2018.12.18 |
- Total
- Today
- Yesterday