-
HTTP 와 HTTPS 차이점
HTTP
HTTP 란 HyperText Transfer Protocol 의 약자로써 웹 상에서 데이터를 주고 받는 양식을 정의한 프로토콜이며, 매우 범용적인 양식을 가지고 있어 전 세계에서 제일 널리 쓰이는 프로토콜이다.
HTTP의 특징
클라이언트 / 서버 구조로써 요청과 응답형태를 가지고 있는데, 클라이언트와 서버가 연결을 맺은 후 요청에 대한 응답이 이루어 지면 맺었던 연결을 끊어버리는 비연결성(Connectionless) 의 특징을 가지고 있고, 이러한 특징 때문에 서버가 클라이언트 상태를 보존하지 않는 무상태(Stateless) 프로토콜이다.
상태를 보존하지 않는다는 의미는 클라이언트가 요청을 보내고 서버에서 응답을 한 뒤 다음 요청을 보낼 때 이전 요청은 기억하지 않는다는 의미이다.
HTTPS
HTTPS 란 HTTP 에서 S(Secure) 이 추가된 약어로써 보안성을 추가한 프로토콜이다.
이때 TLS(SSL) 이라는 프로토콜을 사용해 요청과 응답에 대한 정보를 암호화 하게 되는데 TLS 는 기존의 SSL 이라는 암호화 프로토콜에서 발전한 것이다.
TLS는 공캐기 암호화라는 기술을 사용하는데, 서버를 만드는 기업쪽에서 공개키와 개인키를 만들어 CA(인증기관)에 의해 암호화 되어 서명되고 브라우저에는 암시적으로 신뢰하는 CA목록이 있다. 이때 신뢰할 수 있는 CA목록에 의해 서명된 인증서라는 뜻이 바로 주소 표시줄에 있는 자물쇠인 것이다.
*추가
HTTPS를 왜 사용하는지에 대해 버디님과 얘기를 나누던 도중 한가지를 추가적으로 알게 되어 정리를 해보려고 한다.
HTTP 에서 HTTPS 를 사용하는 이유는 첫번째 '보안' 도 현대사회에선 무척이나 중요한 이유이다. 두번째 이유는 바로 '검색엔진 최적화(SEO)' 인 것이다.
SEO에 대해 간략하게 설명하자면 우리가 구글, 네이버와 같이 검색창을 통해 검색어를 입력했을 경우 상위 리스트에 웹페이지를 노출시키는 작업 이라고 볼 수 있다.
구글은 SSL화를 검색 순위 결정에 포함한다고 발표한 바가 있는데, 물론 검색 순위결정에는 여러가지 요인들로 인해 항상 변동하지만 SSL화를 함으로써 검색순위 평가기준에 플러스요인이 된다라는 것을 인지한 이상 SSL화는 필수적이라고 볼 수 있는것이다.
RESTful API
RESTful API 를 알기전에 우선 REST 에 대한 개념을 알아야 한다.
REST란 Representational State Transfer 의 약자로써 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든것을 의미한다.
조금 더 구체적으로 얘기하자면 HTTP URL 을 통해 자원을 명시하고 HTTP Method 를 통해 자원에 대한 CRUD Operation 을 적용하는 것을 의미한다.
CRUD Operation 에는
C : Create - 생성(POST)
R : Read - 조회(GET)
U : Update - 수정(PUT or PATCH)
D : Delete - 삭제(DELETE)
가 있다.
REST 의 특징으로는
1. 서버 - 클라이언트 구조
2. 무상태
3. 캐시처리가능
4. 계층화
5. 인터페이스 일관성
6. 자체 표현 구조
를 가지고 있다.
REST 의 장점으로는 HTTP프로토콜의 인프라를 그대로 사용하기 때문에 별도의 인프라를 구축할 필요가 없고, 클라이언트 - 서버 역할의 명확한 분리하고, HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하며, REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
REST API
REST API란 REST 기반으로 서비스 API를 구현한 것이다.
REST API 의 설계 기본 규칙으로는
1. URL은 정보의 자원을 표현해야 한다.
- resource 는 동사보다는 명사, 대문자 보다는 소문자를 사용해야 하고 도큐먼트 이름으로는 단수명사, 컬렉션 and 스토어 이름으로는 복수명사를 사용해야 한다.
2. 자원에 대한 행위는 HTTP Method 로 표현한다.
- URL에 HTTP Method 가 들어가면 안되고, 행위에 대한 동사 표현이 들어가면 안되며, 경로 부분 중 변하는 곳은 유일한 값으로 대체한다.
마지막으로 RESTful API 란 REST 를 REST 답게 사용하자는 방법으로 누군가 공식적으로 발표한 것이 아니다.
즉 RESTful API 는 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것이고 REST API 의 규칙을 올바르게 지킨 시스템을 지칭한다.
참고자료
https://www.ssl.com/ko/%EC%9E%90%EC%A3%BC-%EB%AC%BB%EB%8A%94-%EC%A7%88%EB%AC%B8/https-%EB%9E%80/
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html