우선 API와 REST가 무엇인지 알아야 할 필요가 있다!
API
API는 응용 프로그램(애플리케이션)에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공합니다. // 위키백과 |
음.. 쉽게 말하면
망딕과 TV가 있다고 생각해 봅시다. 망딕은 TV를 켜기 위해 리모콘을 사용했다!
망딕은 리모콘을 사용하여 볼륨을 높였다!
망딕 - 리모콘 - TV 이런 구조가 되겠죠?
여기서 리모콘을 API라고 생각해보면 이해하기 편할겁니다 ㅋㅋ
즉, API(리모콘)는 응용프로그램(망딕)과 운영체제 및 프로그래밍 언어가 제공하는 기능(TV) 사이에서 상호작용을 도와주는 역할을 합니다!
REST : REpresentational State Transfer
- 웹 콘텐츠나 데이터를 HTTP 기반으로 간단히 주고 받기 위해 정의된 간단한 형식의 인터페이스를 말함
- HTTP 메소드(POST, GET ...)를 통해 CRUD(Create, Read, Update, Delete) 연산을 수행
- 데이터를 주고 받는 형식에는 json, xml, text, rss 등이 있으며 Key와 Value를 활용하는 json을 주로 사용
REST 규칙
인터페이스 일관성 (Uniform Interface)
- 일관성 있는 인터페이스로 URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍쳐 스타일
- 일관적인 인터페이스로 분리되어야 함
클라이언트-서버 구조 (Client-Server)
- 서버는 자원을 보유하고 있음
- 클라이언트는 필요한 자원을 요구함
- REST 서버는 API를 제공하고 클라이언트는 사용자 인증, 컨텍스트(세션, 로그인 정보 등)를 직접 관리
무상태 (Stateless)
- HTTP 프로토콜이 Stateless Protocol인 것과 마찬가지로 REST 역시 무상태성을 가짐
- 클라이언트의 컨텍스트를 서버에 저장하지 않으므로 서버 구현이 단순해짐
캐시 처리 가능 (Cacheable)
- 클라이언트는 응답을 캐싱할 수 있어야 함
- 웹 표준을 따라 웹의 인프라를 사용할 수 있으므로 캐싱 기능 적용 가능
- 보통 서비스에서 조회 기능이 많이 사용된다는 것을 생각해보면, 캐싱이 용량과 성능 면에서 장점이 됨
- 응답시간이 빨라지고 트랜잭션이 발생하지 않아 대용량 요청을 효율적으로 처리
계층화 (Layered System)
- 클라이언트와 서버가 분리되어 있기 때문에, 프록시 서버나 로드 밸런싱, 암호화 계층 등 중간매체를 사용하여 자유도를 높일 수 있음
- 클라이언트는 API만 호출하므로 서버에 직접 통신하는 것인지 중간 서버와 통신하는 것인지 알 수 없음
코드 온디맨드 (Option)
- 요청을 받으면 서버에서 클라이언트로 실행 가능한 코드를 전송하여 클라이언트 기능을 확장할 수 있는 기능.
REST API
REST API(REpresentational State Transfer)는 웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고, 해당 리소스에 대한 행위를 HTTP Method로 정의하는 방식을 말합니다. |
즉, 리소스를 ~하겠다! 를 구조적으로 깔끔하게 표현하는 방법이라고 합니다.
REST 아키텍처 스타일의 디자인 원칙을 준수하는 API, 대부분의 서비스가 REST API를 통해 제공됩니다.
또한 HTTP 표준을 기반으로 구현하기 때문에 HTTP를 지원하는 프로그램 언어를 사용하여 클라이언트와 서버를 구현할 수 있습니다
REST API의 설계 가이드도 있지만...
불같은 남자 망딕, 서버파트가 아니기 때문에 자세한 설명은 생략한다.
RESTful API
REST 구조를 따라 구현된 API를 RESTful API라고 합니다.
RESTful 시스템은 데이터를 전송하거나 받기 위해 요청 형식을 명확히 정의해야 합니다.
요청 형식은 따로 정해져 있지 않지만,
서버와 클라이어트 간에 어떤 식으로 데이터를 주고받을 것인지 서로 협의 하는 것에 따라 달라집니다!
RESTful 시스템은 네트워크 서버를 통해서 뿐만 아니라 일반 웹 서버를 통해서도 약간의 설정만으로 쉽고 간단하게 구현할 수 있는 장점이 있습니다.
RESTful 기반으로 서버에서 요청과 응답을 주고 받을 수 있도록 정의된 형식을 RESTful API라고 하는 겁니다 ㅎㅎ
RESTful API에서 주고받는 내용들은 모두 HTTP 본문에 담겨서 전달됩니다.
특히 이 본문을 JSON 형식으로 구성하여 보내기 때문에, RESTful API 통신을 위해서는 JSON을 알아야겠죠?
JSON에 관한 내용은 다음 시간에 정리해 볼게요!
RESTful의 장점은 뭐가 있지??
API를 RESTful하게 만들어서 API의 목적이 무엇인지 명확하게 하기 위해 RESTful함을 지향합니다. |
이 내용을 보면 RESTful API 그 자체만으로도 API의 목적이 무엇인지 알 수 있다는 장점이 있습니다.
'네트워크' 카테고리의 다른 글
네트워크 - HTTP, 그런데 Socket을 곁들인... (0) | 2021.11.01 |
---|