프로그래밍 언어/NODE JS

req, res 객체 살펴보기

· 코딩마이데이

 

익스프레스의 req, res 객체는 http 모듈의 req, res 객체를 확장한 것입니다. 기존 http 모듈의 메서드도 사용할 수 있고, 익스프레스가 추가한 메서드나 속성을 사용할 수도 있습니다. 예를 들어 res.writeHead, res.write, res.end 메서드를 그대로 사용할 수 있으면서 res.send나 res.sendFile 같은 메서드도 쓸 수 있습니다. 다만, 익스프레스의 메서드가 워낙 편리하므로 기존 http 모듈의 메서드는 잘 쓰이지 않습니다.

익스프레스가 많은 속성과 메서드를 추가했지만, 여기서는 자주 쓰이는 것 위주로만 알아보겠습니다.

 

req 객체부터 살펴봅니다.

 req.app: req 객체를 통해 app 객체에 접근할 수 있습니다. req.app.get('port')와 같은 식으로 사용할 수 있습니다.

 req.body: body-parser 미들웨어가 만드는 요청의 본문을 해석한 객체입니다.

 req.cookies: cookie-parser 미들웨어가 만드는 요청의 쿠키를 해석한 객체입니다.

 req.ip: 요청의 ip 주소가 담겨 있습니다.

 req.params: 라우트 매개변수에 대한 정보가 담긴 객체입니다.

 req.query: 쿼리스트링에 대한 정보가 담긴 객체입니다.

 req.signedCookies: 서명된 쿠키들은 req.cookies 대신 여기에 담겨 있습니다.

 req.get(헤더 이름): 헤더의 값을 가져오고 싶을 때 사용하는 메서드입니다.

 

res 객체도 살펴봅시다.

 

 res.app: req.app처럼 res 객체를 통해 app 객체에 접근할 수 있습니다.

 res.cookie(키, 값, 옵션): 쿠키를 설정하는 메서드입니다.

 res.clearCookie(키, 값, 옵션): 쿠키를 제거하는 메서드입니다.

 res.end(): 데이터 없이 응답을 보냅니다.

 res.json(JSON): JSON 형식의 응답을 보냅니다.

 res.locals: 하나의 요청 안에서 미들웨어 간에 데이터를 전달하고 싶을 때 사용하는 객체입니다.

 res.redirect(주소): 리다이렉트할 주소와 함께 응답을 보냅니다.

 res.render(뷰, 데이터): 다음 절에서 다룰 템플릿 엔진을 렌더링해서 응답할 때 사용하는 메서드입니다.

 res.send(데이터): 데이터와 함께 응답을 보냅니다. 데이터는 문자열일 수도, HTML일 수도, 버퍼일 수도, 객체나 배열일 수도 있습니다.

 res.sendFile(경로): 경로에 위치한 파일을 응답합니다.

 res.set(헤더, 값): 응답의 헤더를 설정합니다.

 res.status(코드): 응답 시의 HTTP 상태 코드를 지정합니다.

req나 res 객체의 메서드는 다음과 같이 메서드 체이닝(method chaining)을 지원하는 경우가 많습니다. 메서드 체이닝을 활용하면 코드양을 줄일 수 있습니다.

res
  .status(201)
  .cookie('test', 'test')
  .redirect('/admin');

 

'프로그래밍 언어 > NODE JS' 카테고리의 다른 글

퍼그 - HTML 표현  (1) 2025.07.11
템플릿 엔진 사용하기 - 퍼그(제이드)  (0) 2025.07.09
Router 객체로 라우팅 분리하기  (2) 2025.07.03
multer  (0) 2025.06.30
미들웨어 특성 활용하기  (1) 2025.06.27