학부생때 프로젝트를 진행하며 자주봤던 단어 REST, RESTFUL API 등등.. 그래서 구글링을 해보면 GET,POST,PUT,DELETE 가 두두둥장. 난 웹이라는 것을 1도 알지못하는 상태였고, 프로젝트에 필요한 API를 찾아 사용하던 중 RESTFUL API를 제공한다기에 알아봤던 상황이었다. 당시에는 프로젝트의 완성만을 쫒던 철부지같던 심정에 대애충 넘어갔던 REST. 이제는 제대로 알아보자
REST(Representational State Transfer)는 웹 상에 존재하는 다양한 자원들을 HTTP 프로토콜을 이용하여 전송하는 인터페이스다. 자원(이미지, 동영상, DB 자원)등 에 고유한 URI(Uniform Resource Identifier)를 부여해서 활용한다.
인터페이스, 즉 시스템간에 신호를 주고받기위한 매개체다. 이 인터페이스를 이용해서 우리가 웹상에서 보는 데이터들인 자원을 주고받는다. 이때 HTTP 프로토콜을 이용하니 우리(클라이언트)가 웹을 이용하며 자원을 요청(Request)하면 서버(Server)에서 자원을 보내준다(Response).
HTTP가 헷갈린다면 여기로
추가적으로 REST는 ROP(Resource Oriented Architecture)다. 자원 지향 설계라고하는데 OOP,AOP와 같이 프로그래밍 기법이 있다면, 이는 설계 기법중 하나라고 생각할 수있다. 간단하게 자원들을 HTTP Method으로 처리하는 기법이다. 그렇다면 이 때 어떤 방법(Method)으로 자원들을 주고받을까?
HTTP METHOD (CRUD) | 설명 |
---|---|
GET (READ) | 자원 조회 |
POST (CREATE) | 자원 생성 |
PUT (UPDATE) | 정보 수정 |
DELETE (DELETE) | 자원 삭제 |
이 4가지 방법을 기본으로 사용해서 자원들을 주고받는다.
서론에서 말한바와같이 은연중에 많이 접해왔을것이다. 그도 그럴것이 중요한 설계 방식인 Microservice Architecture에 있어서 REST는 적합하다고 볼수있다.
왜냐하면 클라이언트와 서버를 확실히 분리하기 때문이다. 즉 클라이언트 화면단에 뿌려주는 디바이스종류와 상관없이 항상 서버로부터 오는 데이터는 동일하다.
허접한 실력으로 방식을 그려봤는데, 위에서 캐치해야할 부분은 WAS(Web Application Server)에서 DATA를 각각 다른 디바이스 및 다른 서비스 대상들에게 같은 형식으로 준다는 점이다.
DATA는 보통 xml 또는 json 형태로 많이 사용되어진다.
서버에서 REST한 data를 넘겨주면 클라이언트와 분리되기때문에 마이크로서비스 아키텍쳐에 적합하며 자원(Resource)을 고유 URI를 명시해서 굉장히 간단한 HTTP Method를 통해 통신하는 쿨한 서비스
간단하게 말해서 "RESTFUL하다" 는 REST한 아키택쳐를 구성하는 서비스를 말하고 API는 우리가 흔히 공공데이터 API를 사용하듯이 데이터를 제공해주는 인터페이스라고 이해하고있다.
즉, REST한 방식으로 API를 제공해주는 것이 RESTFUL API다.