본문 바로가기

Programming/Node.js

7. 익스프레스 (3) - req, res 객체 알아보기

node js logo image

 

 

 

익스프레스에서의 req, res 객체는 http 모듈의 req, res 객체를 확장한 버전이죠. 그래서 기존 http 모듈의 메서드 뿐만 아니라 익스프레스가 추가한 메서드나 속성을 사용할수도 있습니다(익스프레스 메서드가 편해서 http를 잘 사용하지 않게되는 형식) res.writeHead, res.write, res.end 메서드를 그대로 사용하면서도, res.send, res.sendFile 같은 메서드를 사용할 수 있습니다.

 

익스프레스에서 사용하는 메서드 중 자주 사용하는 것들을 중심으로 살펴보겠습니다. 

 

 

 

○ 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(K, V, option):  쿠키를 설정하는 메서드
  • res.clearCookie(K, V, option): 쿠키를 제거하는 멧드
  • res.end( ): 데이터 없이 응답을 보냄
  • res.json(JSON): json 형식 응답을 보냄
  • res.locals: 하나의 요청 안에서, 미들웨어 간에 데이터를 전달하고 싶을 때 사용
  • res.redirect(주소): 리다이렉트할 주소와 함께 응답을 보냄
  • res.render(뷰, 데이터): 템플릿 엔진을 렌더링해서 응답할 때 사용(추후 별도 학습)
  • res.send(데이터): 데이터와 함께 응답을 보냄. 문자열, HTML, 버퍼, 객체, 배열 등 한정하지 않음
  • res.sendFile(경로): 경로에 위치한 파일을 응답
  • res.set(헤더, 값): 응답의 헤더를 설정
  • res.status(코드): 응답 시의 HTTP 상태 코드 지정

 

 

더불어 res, req의 경우 method chaining(메서드 체이닝)을 지원하는 경우가 많습니다. 형식은 아래와 같죠.

 

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