본문 바로가기

Programming/Node.js

5. http 모듈로 서버 만들기 (2) - REST와 라우팅 [2]

node js logo image

 

 

 

 

앞선 아티클에서 REST의 기본적인 개념과 내용을 살펴보았습니다. 자원의 주소와 HTTP 요청 메서드를 통해서 해당 요청의 내용을 대략 추측할 수 있는 것을 확인했습니다.

 

 

 

5. http 모듈로 서버 만들기 (2) - REST와 라우팅 [1]

REST는 생각보다 자주 듣게되는 용어인데, 의미는 REpresentational State Transfer 입니다. 용어를 기반으로 해석하면 다소 추상적인데, 결과적으로 특정 '자원'을 정의하고, 자원의 주소를 지정하는 프로

nozeroslope.tistory.com

 

 

 

여기서 주소와 요청 메서드를 다룰 때 하나 기억해야 할 사실이 있습니다. 바로 하나의 주소(/users, /post....)는 여러 개의 요청 메서드를 가질 수 있다는 점입니다.

 

예를 들어 GET 메서드의 /user 주소로 요청을 보내면 사용자 정보를 가져오라는 요청임을 짐작할 수 있습니다. 또는 POST 메서드의 /user 주소로 요청을 보내는 경우에는 새로운 사용자를 등록하려 한다는 사실도 예상할 수 있죠(참고로 로그인과 같이 구분이 애매한 경우에는 그냥 POST를 씁니다).

 

이렇게 REST는 주소와 메서드만으로도 요청의 내용을 추론할 수 있다는 장점이 있고, GET 메서드의 경우에는 바디에 별도의 데이터가 없는 형태이기 때문에 브라우저에서 캐싱(기억)할 수도 있어서 향후 같은 주소 + GET 요청이 진행될 경우 서버가 아닌 캐시에서 로드가 되어 성능이 향상될 수도 있습니다. 

 

또한, REST를 사용할 경우 클라이언트의 종류와 상관 없이 같은 방식으로 서버와 소통이 가능합니다. 즉 iOS, Android, Web, 혹은 또다른 서버가 모두 동일한 주소로 요청을 보내는 것이 가능합니다. 결국 서버가 클라이언트의 종류에 귀속되지 않고 분리되어 운영이 된다는 점이죠. 이런 구조라면 나중에 서버를 확충하더라도 클라이언트에 구애 받지 않고 서버만 확장이 가능합니다. 

 

이제 이러한 REST 사용 주소 체계를 따르는 서버를 RESTful 서버로 칭하게 됩니다. 지금부터 작성하게 되는 예제에서는, 아래와 같은 주소 구조를 사용합니다. 통상적으로 사이트 설계 시, 미리 주소 구조를 형성해 두는 것이 좋습니다. 

 

HTTP 메서드 주소 역할
GET / restFront.html 파일 제공
GET /about about.html 파일 제공
GET /users 사용자 목록 제공
GET 기타 기타 정적 파일 제공
POST /user 사용자 등록
PUT /user/사용자id 해당 id의 사용자 수정
DELETE /user/사용자id 해당 id의 사용자 삭제[

 

 

다음 아티클부터 HTML 페이지와 서버 파일을 작성해 보겠습니다.