티스토리 뷰

Computer Science/Etc

REST API와 RESTful API란?

감성적인 개발자 2022. 4. 6. 00:03

REST API와 RESTful API

REST API를 한 마디로 정의하면 API가 REST방식으로 동작하는 것을 뜻하며 RESTful API는 REST방식을 잘 준수한 API를 뜻한다. 이게 무슨 뜻인지 이해하기 위해 REST와 API가 각각 무엇인지 알아보았다.

 

API (Application Programming Interface)

웹 이나 모바일 앱에서 클라이언트(사용자)가 서버로 요청을 전송하면 서버는 그에 대한 응답을 보내준다. 예를 들면 도서관 시스템에서 검색창에 원하는 책을 입력하고 검색버튼을 누르면 검색결과가 나오는것과 같다.

 

이 때 사용자는 검색창을 이용해 도서 검색을 하게 되는데, 이러한 검색 창과 같이 지정된 형식으로 요청을 받아 프로그램간에 상호작용을 하는 수단을 API라고 할 수 있다. 즉 프로그램 기능을 실행시키기 위한 인터페이스인것이다. 이런 API가 REST한 방식으로 동작한다는건 무슨 의미일까?

 

REST (Representational State Transfer)

자원에 대한 접근은 URI, 행위는 HTTP method로 정의하는 것을 의미한다.

프로그램이 동작하면 자원(데이터)에 대한 CRUD(생성, 읽기, 수정, 삭제) 연산이 이루어지는데, 이러한 연산을 수행하기 위해 URI에 자원을 명시하고 HTTP method(POST, GET, PUT, PATCH, DELETE)를 통해 자원에 대한 행위를 구분하는 것이 REST라고 할 수 있다. POST method만 이용하더라도 CRUD 연산을 모두 할 수 있으나, 수행할 연산을 구분하기 위해 기능에 따라 method를 구분하는 것을 권고한다.

 

데이터 연산 HTTP method
CREATE (생성) POST
READ (읽기) GET
UPDATE (전체수정) PUT
UPDATE (부분수정) PATCH
DELETE (삭제) DELETE

 

적용 예시

REST 적용 전 REST 적용 후
 /createMovies  POST /movies
 /getMovies  GET   /movies
 /updateMovies/inception  PUT   /movies/inception
 /deleteMovies/inception  DELETE /movies/inception

 

URL에는 동사가 존재해선 안되고 명사로만 구성되어야한다. 같은 주소일지라도 HTTP method에 따라 행위가 다르기 때문에 구현해야할 URL이 줄어들어 효과적이다.

 

쿼리파라미터

만약 검색, 필터링을 적용할 경우 쿼리파라미터를 이용하면 새로운 URL을 생성하지 않아도 되기에 효과적이다. 

쿼리파라미터는 URL 뒤에 "?" 부터 시작하며,  쿼리파라미터가 여러개일 경우 "&" 로 구분한다.

 

다시 REST API와 RESTful API

HTTP 프로토콜을 이용하고 URI, HTTP method를 통해 자원에 대한 CRUD 연산을 하면 REST를 통해 API가 동작하는 REST API라고 할 수 있다. REST API를 이용하면, HTTP를 따르는 모든 플랫폼에서 그대로 이용할 수 있다는 점과 메세지(URI)만으로도 요청을 추론할 수 있다는 장점이 있다. 이러한 REST 제약조건을 준수하여 설계된 API를 RESTful API라고 한다.

 

 

SOAP(Simple Object Access Protocol) vs REST(Representational State Transfer)

RESTSOAP 둘 다 API를 구축하는 방법을 정의하는 데이터 전송방식이지만, SOAPWorld Wide Web Consortium (W3C)에서 관리하는 공식 프로토콜인 반면, REST아키텍처 원칙 세트(가이드라인)으로 프로토콜이 아니다.

 

REST는 프로토콜이 아닌 만큼 경량화된 서비스에 맞는 원칙세트이다. 데이터 요청은 HTTP를 통해 이루어지며 이를 수신한 RESTful API는 HTML, XML, JSON, 텍스트와 같은 형식으로 응답한다.

 

SOAP표준 프로토콜인 만큼 복잡성과 오버헤드가 높지만, API 보안트랜잭션에 대한 안정성(ACID)을 제공한다. 이러한 이유로 민감한 데이터를 처리하는 기업이나 레거시 시스템에서 채택한다. 데이터 요청은 HTTP/HTTPS/SMTP 등을 통해 이루어지며 API는 XML 메세지로 응답한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함