본문 바로가기

Node.js Backend

[Node.js] Rest API 에 관하여

반응형

REST = represetational state transfer 의 약자입니다. 즉 자원을 명시하여 주고받는 행위를 말합니다.
단순하게 말하자면 CRUD(create,read,update,delete)를 get,post,put,delete라는 키워드를 사용하여 자원을 관리한다는게 rest의 개념입니다.

REST가 자주 사용되는 이유는 '애플리케이션의 분리 및 통합', '다양한 클라이언트의 등장', '서비스 자원에 대한 아키텍쳐가 깔끔하고 쉬워서'입니다.

REST의 구성 요소

  • 자원(resource) = URI
  • 행위(verb) = HTTP Method
  • 표현(rpresentations)
    GET/200 HTTP/1.2
    Host : hak-kyoung.tistory.com
    위와같은 req가 있으면 URI는 /200, Method는 "get"입니다. 이를 해석하자면 hak-kyoung.tistory.com 서버에 /200자원을 get하곳싶다는 요청으로 해석하시면 됩니다.

REST의 특징

  • uniform interface : Http에 따르면 안드로이드,ios등등 특정한 플랫폼에 종속되지 않고 모든 플랫폼에서 사용 가능하며 uri로 지정한 리소스에 대한 조작이 가능한 아키텍쳐 스타일을 의미합니다.
  • stateless : http는 stateless protocol이므로 rest 역시 무상태성을 가집니다. context storage에 상태정보를 따로 저장하고 관리하지 않고, api서버는 들어오는 요청만을 단순 처리하면 됩니다. 세션과 같은 컨텍스트 정보를 신경쓸 필요가 없이 구현이 단순해 집니다.
  • cacheable : http 프로토콜을 사용하기 때문에 기존 웹 인프라를 그대로 사용가능하다. 즉, 웹 브라우저에서 http캐시를 이용하는 등의 동작이 그대로 이용가능하다. 같은 uri에 대한 요청이 여러번 있을때, uri리소스를 매번 서버로 요청하지 않고 클라이언트의 http캐시에서 미리 가져온 정보를 반환한다.
  • self-descriptiveness : rest api 메시지 그 자체로 쉽게 이해할 수 있어야 한다. 별도의 주석이나 문서 없이 특정 rest api가 원하는 바를 쉽게 이해할 수 있어야 한다.
  • client-server architecture : rest api서버는 클라이언트에게 api를 제공학디만 한다. 서버는 클라이언트의 실행 문맥을 알고 있을 필요가 없이 독립적인 rest api에 대한 서비스만 제공하면 된다. 따라서 클라이언트와 서버간의 역할분담이 명확하게 분리된다.
  • layered system : rest api는 multi-layer로 구성될 수 있따. 클라이언트는 대상 서버에 직접 붙었는지 중간에 존재하는 서버와 통신하는지 알 수 없다. 이 중간에 존재하는 서버를 이용하여 securityrhksfl encrypt, load balancing 등을 수행할 수 있어 확장성 및 보안 향상이 가능하다.
  • code on demand ( optional) : 이것은 선택적인 제약조건이다. 서버가 런타임동안 함수를 확장시킬 수 있다는 것을 말한다.
반응형

'Node.js Backend' 카테고리의 다른 글

[Node.js] URL 이해하기  (0) 2019.09.17
[Node.js] Template Literal  (0) 2019.09.15
[Node.js] Javascript 문법 - Data type  (0) 2019.09.05
Node.js란?  (1) 2019.08.06
Node.js(express)연동하여 웹서버 만들기  (0) 2019.08.05