본문 바로가기

Node.js/Express

Express - req, res 객체

익스프레스의 req, res 객체는 기본적으로 http 모듈의 req, res 객체를 확장한 것이다. 기존 http 모듈의 메서드는 물론 익스프레스가 추가한 메서드나 속성을 이용할 수도 있다. 예를 들어 res.writeHead, res.write, res.end 메서드를 그대로 사용할 수 있으면서도 res.send 또는 res.sendFine 등의 메서드도 쓸 수 있다. 다만 익스프레스의 메서드가 워낙 편리하기 때문에 기존 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: 똑같이 res 객체를 통해 app 객체에 접근한다.
  • res.cookie(키, 값, 옵션): 쿠키를 응답에 설정하는 메서드이다.
  • res.clearCookie(키, 값, 옵션): 쿠키를 응답에서 제거하는 메서드이다.
  • res.end(): 데이터 없이 응답을 보낸다.
  • res.json(JSON): JSON 형식의 응답을 보낸다.
  • res.redirect(주소): 리다이렉트할 주소와 함께 응답을 보낸다.
  • res.render(뷰, 데이터): 템플릿 엔진을 렌더링하여 응답할 때 사용하는 메서드이다.
  • res.send(데이터): 데이터와 함께 응답을 보낸다. 데이터는 문자열, HTML, 버퍼, 객체, 배열 등이 될 수 있다.
  • res.sendFile(경로): 경로에 위치한 파일을 응답한다.
  • res.set(헤더, 값): 응답의 헤더를 설정한다.
  • res.status(코드): 응답 시의 HTTP 상태 코드를 지정한다.

 

출처

Node.js 교과서 개정 2판 - 길벗, 조현영