본문 바로가기
Programming/Node.js

[Node.js] REST

by Bam_t 2021. 12. 1.
728x90

주소창을 보면 다음과 같이 어지러운 문자열이 나열되어있습니다.

이것은 페이지에서 현재 주소를 나타냄과 동시에 요청 내용을 표시합니다. 우리는 지금 부터 이 내용을 통해 어느정도 지금 페이지에서 무엇을 요청해서 보여주고 있구나를 알 수 있습니다.


1. REST

REST는 REpresentational State Transfer의 줄임말로, 직역하면 대표 상태 전송입니다. 풀어서 말하면 전송하는 서버의 자원들에 대한 주소를 지정하는 방식입니다. 왜 대표적으로 지정해야하냐면, 우리가 이전의 예시처럼 html 페이지만 전송하면 편하겠지만, 실제로는 이미지, 동영상 등도 전송합니다. 그러나 이런것들은 위의 주소창에 모든 것을 표시하면 엄청 길어질수도 있겠죠? 혹은 개인정보를 다루는 페이지라면 개인정보가 표시되어 위험할 수도 있기에 REST의 여러 방식들을 이용해서 주소를 정의합니다.

REST를 이용하면 뭐가 좋냐면, 프로그래머는 물론이고 일반 사용자도 주소창에 써진 주소값만 보고도 뭐하는 상황인지를 유추할 수 있다는 것 입니다.

대표적인 예시로 현재 새 포스트를 작성하는 제 브라우저 주소창인데요. 제 티스토리 블로그의 관리 중 새포스트 작성을 이용하고 있다고 알 수 있습니다.

이 외에도 REST 방식에서는 HTTP 요청 메소드를 사용합니다. HTTP 요청 메소드는 아래 링크에서 자세하게 다뤘습니다.

2021.10.28 - [Programming/CS] - HTTP - HyperText Transfer Protocol

 

HTTP - HyperText Transfer Protocol

웹에 대한 걸 다루기 위해, 웹 개발자가 되기 위한 모든 것의 근간이 되는 프로토콜입니다. 클라이언트와 서버간의 통신을 위해 사용되고 있기 때문에 가장 기초적이고 필수적인 프로토콜이라

bamtory29.tistory.com

 

HTTP 요청 메서드를 간략히 정리하면 다음과 같습니다. (위의 링크에도 소개했습니다.)

  • GET: 서버에서 자원을 가져옵니다. 요청 본문에 데이터를 넣지 않습니다.
  • POST: 서버에 자원을 새로 등록합니다. 요청 본문에 데이터를 넣습니다.
  • PUT: 서버의 자원을 요청에 들은 자원으로 교체합니다. 요청의 본문에 변경 데이터를 넣습니다.
  • PATCH: 서버의 자원을 일부분만 수정합니다. 요청 본문에 수정 데이터를 넣습니다.
  • DELETE: 서버의 자원을 삭제합니다. 요청 본문에 데이터를 넣지 않습니다.
  • OPTIONS: 요청 이전 통신 옵션을 설명하기 위해 사용합니다. 

 

여기서 잠깐, 요청의 본문이라는 이야기가 나오는데요. 이것은 추후에 나올 쿠키와 세션 포스트에서도 사용되는 용어이기에 잠깐 정리하고 넘어가겠습니다.

Request와 Response는 헤더와 본문을 가지고 있습니다. 헤더는 요청과 응답에 대한 정보를 가지고 있는 곳입니다. 본문은 통신으로 주고 받는 데이터를 실질적으로 담아둔 공간입니다.

 

2. RESTful

RESTful이라는 것은 REST 규칙에 따른 주소 체계를 의미합니다. 주소에 HTTP 요청 메소드와 자원을 명시함으로서 주소만 보고도 어떤 작업을 진행 중이구나 하고 알 수 있는 것을 의미합니다.

예를 들어 게시판의 글를 읽으면 데이터를 전송할 때 GET /post와 같은 식으로 전송해서 post를 GET한다. 즉 포스트 정보를 불러온다 라는 것을 유추할 수 있게 됩니다.

혹은 개발자 도구의 네트워크에서 정보를 확인할수도 있습니다. 제 노드 공부용 리포지토리에 접속한 순간인데 리포지토리 페이지 정보를 GET메소드로 받아와서 표시했다고 알아볼 수 있게 됩니다.

이렇게 REST형식을 따라서 주소 체계를 만들었다면 우리는 이 서버를 RESTful하다라고 합니다.

728x90

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

[Node.js] package.json 알아보기  (0) 2021.12.02
[Node.js] 쿠키 만들기  (0) 2021.12.01
[Node.js] 첫 서버와 Hello world!  (0) 2021.11.30
[Node.js] 노드의 모듈  (0) 2021.11.30
[Node.js] REPL  (0) 2021.11.28

댓글