💡 HTTP/HTTPS는 어플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다.
HTTP는 서버와 클라이언트가 데이터를 주고 받기 위한 웹 통신규약(프로토콜)
HTTP는 암호화가 되지않은 데이터를 전송하는 프로토콜로, HTTP 프로토콜을 통해 개인 정보를 주고 받으면 제 3자가 이를 탈취할 수 있다.
이러한 문제를 해결하기 위해 HTTPS
가 등장하게 되었다.
HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜로, 정보를 암호화하는 SSL 프로토콜을 통해 HTTP 요청 및 응답을 암호화한다.
정리하자면,
👉 HTTP는 서버와 클라이언트가 데이터를 주고 받기 위한 프로토콜이고, HTTPS는 HTTP보다 안전한 프로토콜이다.
👉 따라서 개인정보와 같은 민감한 데이터를 다뤄야할 땐 HTTPS 사용이 권장된다.
HTTPS는 공개키 암호화 방식
을 통해 암호화가 이루어진다.
여기서 공개키 암호화 방식
이란 공개키, 개인키라고 부르는 두 개의 키를 사용해 각각의 키는 암호화, 복호화만 가능하도록 제한을 둔 방식을 말한다.
즉 암호화한 내용을 풀려면 반드시 암호화에 사용되지 않은 키로만 복호화가 가능한 셈이다.
대칭키 방식
보다 복잡한 연산과정을 거치므로, 더 많은 연산 시간이 요구된다.HTTPS 통신은 인증서를 발급해주는 공인기관인 CA를 통해 클라이언트가 서버를 신뢰하고, 데이터를 암호화하는 과정으로 이루어진다.
RESTful API는 HTTP 프로토콜을 기반으로 REST 설계 규칙
을 준수한 API를 말한다. 즉 HTTP 프로토콜을 그대로 활용하기 때문에, 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
RESTful API
의 가장 큰 특징으로는
❶ 각 요청만 보고도 어떤 동작이나 정보를 위한 것인지 쉽게 유추할 수 있고,
❷ 1개의 URI로 CRUD와 같은 4가지 행위를 명시할 수 있어 자원을 아낄 수 있다.
📍 REST란 무엇을 의미하는가❓
- 자원을 URI로 표시하고 해당 자원의 상태를 주고 받는 것을 의미한다.
- 좀 더 풀어서 설명해보면 👉 웹의 관점에서 REST는 URI를 통해 자원을 명시하고, 자원에 대한 행위는 HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것이다.
📍 REST API와 RESTful API는 무엇이 다를까❓
RESTful은 REST의 설계 규칙을 잘 지켜서 설계된 API를 의미한다.
👉 즉, REST의 원리를 잘 따르는 시스템(API)을 RESTful하다(RESTful API)고 할 수 있다.
- URI는 리소스를 표현해야 한다. 리소스를 식별할 수 있는 이름은 동사보다는 명사를 사용한다.
- 리소스에 대한 행위는 HTTP 요청 메서드로 표현한다. HTTP 메서드(GET, POST, PUT, PATCH, DELETE 등)를 사용하여 CRUD를 구현한다.
// Bad
http://naver.com/Running/
// Good
http://naver.com/run/
// Bad
http://naver.com/test/
// Good
http://naver.com/test
// Bad
http://naver.com/test_blog
// Good
http://naver.com/test-blog
// Bad
http://naver.com/photo.jpg
// Good
http://naver.com/photo
// Bad
http://naver.com/delete-post/1
// Good
http://naver.com/post/1
대표적인 HTTP Method로는 GET
, POST
, PUT
, PATCH
, DELETE
가 있다.
Method | 역할 | 설명 |
---|---|---|
GET | READ | 서버에게 URI가 가진 정보 검색 요청 |
POST | CREATE | 서버에게 추가할 정보 보냄 |
PUT | UPDATE | 주로 데이터 전체를 바꿀 때 사용 |
PATCH | UPDATE | 주로 일부 데이터만 수정할 때 사용 |
DELETE | DELETE | 특정 정보 삭제 |
URI는 URL을 포괄하는 상위 개념이다.
👉 따라서 URI와 URL의 차이점은 URI는 자원을 식별하고, URL은 자원의 위치를 가르킨다
라고 할 수 있다.