Soy's Devlog
[API] REST / WEB API / REST API / RESTful 을 알아보자 본문
API
( Application Programming Interface ) 의 약자이고, 응용프로그램 간에 통신을 할 때 적용되어야 할 공통의 규칙과 기준을 정의한 것.
어떻게 통신할지 방법을 정의해놓은 것인데, 응용프로그램이나 운영체제 등이 제공하는 서비스를 제어하는 용도로 쓰인다
WEB API
HTTP 통신 방식을 이용하여 웹서버나 웹어플리케이션을 위해 제공되는 API이다.
HTTP (Hypertext Transfer Protocol)
웹에서 통신하기 위한 대표적 프로토콜.
클라이언트가 웹을 통해 해당 프로토콜의 요청을 보내 서버로 request(요청)하면 서버가 해당 response(응답)을 웹으로 보내준다.
우리가 알고있는 http://example.com/pop 과 같은 web 주소(링크) 가 HTTP 프로토콜 형태이며 이를 URI 라고 한다.
URI ( Uniform Resource Identifier ) : 웹상에서의 자원을 식별하기위한 문자열로 구성
URL ( Uniform Resource Locator ) : 웹 또는 네트워크 상에서 자원의 위치

REST 란
( Representational State Transfer ) 의 약자이며, 웹과 같은 하이퍼미디어 (얽혀있는 정보처리) 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 쉽게말해 웹에 존재하는 사진, 동영상, 데이터 등 모든 자원에 대해 고유의 URI를 부여하여 관리하는 아키텍처 ( 패턴 )이다.
구성요소
1. 자원 ( Resource )
데이터 또는 자원을 의미하며 모두 고유의 id가 있으며 이는 서버의 id와 동일하다. URI 라고 말할 수 있다.
2. 행위 ( Method )
HTTP 메소드를 이용하여 클라이언트가 URI로 자원을 조작할 수 있는 CRUD 기능을 지원한다.
3. 표현 ( Representation )
클라이언트가 서버로 요청을 보낸 후 서버로부터 받은 응답을 representation 이라고 한다.
응답의 형태는 JSON, XML, TXT, RSS 등 다양하게 받을 수 있지만 주로 JSON과 XML이 가장 많이 사용된다.
REST 의 특징
1. 인터페이스의 일관성 : 자원에 지정한 URI와 조작법이 일관적이다. HTTP 규약만 따른다면 어떤 플랫폼에서도 사용 가능하다.
2. 무상태 ( Stateless ) : 각 요청간 클라이언트의 context가 서버에 저장되어서는 안된다.
3. 캐시 처리 가능 : 웹 표준 HTTP를 사용하므로 마찬가지로 클라이언트는 응답을 캐싱할 수 있어야 한다.
4. 계층화 : 클라이언트는 대상 서버에 직접 연결되었는지, 중간 서버를 통해 연결되었는지 알 수 없다.
중간 서버가 로드밸런싱, 사용자인증, 공유캐시 기능 등을 제공해서 확장성을 향상시킬 수 있다.
5. 자체 표현 구조 : 동사인 Method + 명사 URI 의 구조로 어떤 자원에대해 어떤 행위를 했는지 명확히 알 수 있고, API를 이해할 수 있다.
6. 클라이언트 / 서버 구조 : 자원을 요청하는 클라이언트와 응답하는 서버로 구성되어있으며,
아키텍처를 작은 단위로 분리하여 각 파트가 독립적으로 개선될 수 있도록 해 준다.
REST API
HTTP 프로토콜을 기반으로 하는 REST를 사용하기 위해 정의된 공통의 규칙과 기준을 가진 인터페이스를 의미한다.
HTTP API와 REST API 가 같은것 이라고 착각 할 수도 있는데 둘은 엄연히 다른 개념이다.
물론 HTTP 기반의 API 인건 맞지만 REST API 는 HTTP API에 비해 제약 조건이 추가로 필요하기 때문이다.
클라이언트와 서버가 통신하기 위한 모범사례라고 할 수 있으며, REST의 기준이 잘 지켜질 수록 RESTful 하다고 표현한다