본문 바로가기

Programming/Node.js

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

node js logo image

 

 

 

REST는 생각보다 자주 듣게되는 용어인데, 의미는 REpresentational State Transfer 입니다. 용어를 기반으로 해석하면 다소 추상적인데, 결과적으로 특정 '자원'을 정의하고, 자원의 주소를 지정하는 프로토콜 전반을 의미한다고 보면 됩니다. 서버에 요청을 보낼 때는 html 파일 혹은 css나 js, 이미지 파일을 요청하게 됩니다. 이러한 요청의 내용이 주소를 통해 표현하게 되는 것이죠.

 

 

1. 자원(Resource) - HTTP URI

 

여기서 서버로 전달하기 위한 주소는 /user, 혹은 /post와 같은 의미를 추론하기 쉬운 명사를 사용하는 것이 좋습니다. 말 그대로 요청하는 주소가 /index.html이면 index.htm을 보내달라는 의미입니다. /about.html이면 about.html을 요청하는 것이구요. 

 

 

2. 자원에 대한 행위 - HTTP METHOD

 

자, 위와 같이 자원의 주소를 명사로 전달만 하면 해당 자원에 대해 '어떤 동작을 하라는 것인지'는 알 수가 없습니다. 물론 주소가 /user면 사용자 정보와 관련될 것이고 /post면 게시글 관련 자원이라는 것은 추측이 가능하겠죠. REST에서는 정확한 동작을 알 수 있도록 주소에 더해 HTTP 요청 메서드를 사용합니다. HTML을 공부할 때 폼 데이터 전송 시에 GET 또는 POST를 지정했던 적이 있을텐데, 바로 이것입니다. 아래에 HTTP 요청 메서드의 종류를 설명할테니, 우선 개념적인 부분만 먼저 이해하고 넘어가시기 바랍니다. 

 

  • GET : 서버의 자원을 가져올 때 사용합니다. 단, 요청(req)을 보낼 때 본문(body) 영역에 데이터를 넣지 않습니다. 만일, 특정 데이터를 서버로 보내야 하는 경우 본문을 사용하지 않으므로 쿼리 스트링을 사용하게 됩니다.
  • POST : 서버에 자원을 등록할 때 사용합니다. 요청(req)을 보낼 때 본문(body) 영역에 새로 등록할 데이터를 넣어서 보내게 됩니다.
  • PUT : 요청으로 자원을 보내서 서버에 있는 자원으로 치환할 때 사용합니다. 요청의 본문에 치환할 데이터를 넣어서 보내게 됩니다.
  • PATCH : 서버 자원의 일부만 수정하고자 할 때 사용하고, 요청의 본문에 치환할 일부 데이터를 넣어서 보내게 됩니다.
  • DELETE : 서버의 자원을 삭제할 때 사용하며, 요청의 본문에는 데이터를 넣지 않습니다.
  • OPTIONS : 요청을 보내기 전에 통신 옵션을 설명하기 위해서 사용하는데, 추후 자세히 다룰 예정입니다.