본문 바로가기

Programming/Node.js

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

node js logo image

 

 

 

 

 

앞선 아티클에서 구현한 RESTful 서버의 동작에서 확인 가능한 req, res에서 헤더와 바디의 개념을 다시 한번 짚고 넘어가도록 하겠습니다. 아마 헤더와 바디에 대해서 관념적으로는 들은 것이 많겠지만, 좀 더 정확한 정보를 알아보도록 하겠습니다. 

 

  • 기본적으로 req와 res는 모두 헤더와 바디를 갖습니다. 
  • 헤더는 req or res에 대한 정보를 갖고 있습니다. 
  • 바디는 서버와 클라이언트 간에 주고받을 실제 데이터를 저장합니다. 

 

HTTP 요청 또는 응답은 아래와 같은 형태로 도식화 할 수 있겠네요. 

 

 

[HTTP req 또는 res]

HTTP 헤더

(1) 일반(공통)헤더
(2) 요청/응답의 헤더
(3) 엔티티 헤더
HTTP 본문

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>RESTful SERVER</title>
    <link rel="stylesheet" href="./restFront.css">
</head>
<body>
   ....
</body>
</html>

 

 


 

 

우리가 앞선 아티클에서 실습한 restServer.js를 실행해 http://localhost:8082/ 로 실행한 화면을 다시 살펴볼까요? 신규 사용자를 등록하고 개발자 도구 Network 탭에서 요청과 응답을 살펴보겠습니다. 이 중 POST /user 메서드를 중심으로 살펴보겠습니다. 

 

 

 

신규 사용자 등록을 위한 POST /user를 보겠습니다. 여기서 'General'이 바로 일반(공통된) 헤더를 의미합니다. 여기에 Response Headers, Request Headers - 즉 응답의 헤더, 요청의 헤더가 각각 존재하는 것을 볼 수 있습니다. 

 

이제 이 상태에서 Headers 탭 우측의 Payload 탭을 클릭해 볼까요? 여기서는 req의 바디가 표시됩니다. 

 

 

 

 

반대로 Preview 또는 Response 탭에서는 res의 바디가 표시됩니다(Preview에서는 JSON을 깔끔하게 확인 가능)

 

GET /users의 Response를 확인해 보겠습니다. res.end로 보내는 문자열이 표시됩니다.

 

 

 

*참고로 여기서 저장된 유저 정보의 경우 메모리에 저장되는 것으로 처리 되어서 서버 종료와 함께 사라집니다. 이러한 정보를 영구적으로 저장하기 위해서 DB를 사용하게 되는 것이죠.