본문 바로가기

백엔드

[Node.js] 1. 개요 - REST API 서버 구축

REST

REST는 Representational state transfer의 약어이다. HTTP URL을 통해 자원을 명시하고, HTTP Method인 POST, GET, DELETE, PUT을 통해 해당 자원에 대한 CRUD(CREAT, READ, UPDATE, DELETE) 작업을 수행한다. 안드로이드 카테고리에서 Retrofit이라는 REST API를 쉽게 이용하게 하는 라이브러리이다.

 


구성요소

자원을 명시하고 자원에 대한 작업을 수행하기 위해 아래와 같은 구성요소가 필요하다.

 

1. 자원(Resource): URL

  모든 자원은 고유한 ID를 포함하고 있다. 이는 자원은 서버에 존재하게 되고, ID는 이러한 자원을 구별하기 위해 사용된다. 이러한 자원을 구별하는 ID는 HTTP URL로 구분한다. EX) /users/1

 

2. 행위(Verb): HTTP Method

  클라이언트는 HTTP Method인 GET, POST ,PUT, DELETE를 이용하여 자원에 대한 CRUD 작업을 요청한다.

HTTP Method
GET: 자원 조회, POST: 자원 생성, PUT:자원 업데이트, DELETE:자원 삭제

 

3. 표현(Representation): 자원을 표현하는 방식 Json, XML 등..

  클라이언트가 서버에 작업을 요청했을 때 서버가 응답으로 보내는 자원을 자원의 표현(Representation)이라고 한다.

 


REST의 특징

 

1. 클라이언트-서버 구조

  클라이언트와 서버의 역할이 명확히 구분된다.

 

2. 무상태(Stateless)

  HTTP는 무상태 프로토콜이기 때문에 REST 또한 무상태성을 띈다. 이는 서버가 클라이언트에 대한 세션, 쿠키 정보 등을 저장할 필요가 없음을 의미한다.

 

3. 캐시 처리 가능

  HTTP를 그대로 사용하기 때문에 웹의 기존 인프라를 그대로 사용할 수 있다.

 

4. 자체 표현 구조

  REST API만 보고도 이것이 무슨 동작을 요청하는지 정확히 파악할 수 있다.

 

5. 계층화

  REST 서버는 계층화가 가능하다. 예를들어 기존 로직 처리 이외에 로드 밸런싱, 사용자 인증, 암호화 같은 기능을 추가하기에 용이하다.

 

6. 인터페이스 일관성(Uniform Interface)

  URL로 지정한 자원에 대한 조작을 통일된 인터페이스로 수행한다. 인터페이스 일관성의 장점은 URL 길이가 짧아지고 하나의 URL로 많은 표현이 가능하다. 기존의 파라미터를 이용하여 특정 홈페이지의 자원을 조회하고 수정하고 싶은 경우 tistory/@knmy0101?auth=admin를 넘겨주는데 이 때 조회 작업을 할지 수정 작업을 할지 추가로 파라미터를 넘겨주어야 한다. 하지만 REST API의 경우 GET tistory/@knmy0101/admin, PUT tistory/@knmy0101/admin으로 간단하게 가능하다.