출처: http://luckyyowu.tistory.com/346 [요우의 내맘대로 블로그]
출처: http://luckyyowu.tistory.com/346 [요우의 내맘대로 블로그]
요청 객체 (Request)
- 일반적으로 req나 request와 같은 변수로 명명함. 어차피 콜백에 전달되므로 마음대로 지어도 된다. 여기서는 req로 사용.
- Methods
- req.params : 이름 붙은 라우트 파라미터를 담는다. ex : app.get(’/:idx’, (req, res) => { res.send(req.params.idx); }); ->
- req.params(name) : 이름 붙은 라우트 파라미터나 GET, POST 파라미터를 담는다. 하지만 여러가지 혼란을 줄 수 있어 사용하는 것을 지양해야한다.
- req.query : GET 방식으로 넘어오는 쿼리 스트링 파라미터를 담고 있다.
- req.body : POST 방식으로 넘어오는 파라미터를 담고있다. HTTP의 BODY 부분에 담겨져있는데, 이 부분을 파싱하기 위해 body-parser와 같은 패키지가 필요하다.
- req.route : 현재 라우트에 관한 정보. 디버깅용.
- req.cookies (req.signedCookies) : 클라이언트가 전달한 쿠키 값을 가진다.
- req.headers : HTTP의 Header 정보를 가지고 있다.
- req.accepts([types]) : 클라이언트가 해당하는 타입을 받을 수 있는지 확인하는 간단한 메서드.
- req.ip : 클라이언트의 IP Address
- req.path : 클라이언트가 요청한 경로. 프로토콜, 호스트, 포트, 쿼리스트링을 제외한 순수 요청 경로다.
- req.host : 요청 호스트 이름을 반환하는 간단한 메서드. 조작될 수 있으므로 보안 목적으로는 사용하면 안된다.
- req.xhr : 요청이 ajax 호출로 시작되었다면 true를 반환하는 프로퍼티
- req.protocol : 현재 요청의 프로토콜 (http, https 등)
- req.secure : 현재 요청이 보안 요청(SSL?) 이면 true를 반환
- req.url (req.originalUrl) : URL 경로와 쿼리 스트링을 반환. 원본 요청을 logging하는 목적으로 많이 쓰임.
- req.acceptedLanguages : 클라이언트가 선호하는 자연어 목록을 반환. header에서 파싱하면 다국어를 지원한는 어플리케이션이라면 초기 언어 선택에 도움을 줄 수 있음.
응답 객체 (Response)
- 요청 객체와 마찬가지로 이름 마음대로 지어도 된다. 일반적으로 res나 response로 사용한다. 여기서는 res로 사용
- Methods
- res.status(code) : HTTP 응답 코드를 설정한다. 응답 코드가 redirect(30x)라면 res.redirect를 쓰는게 낫다.
- res.set(name, value) : 응답 헤더를 설정. 일반적으로 직접 쓸 일은 없다.
- res.cookie(name, value, [options]) : 클라이언트에 저장될 쿠키를 설정하거나 제거한다. cookie-parser 패키지가 필요하다.
- res.redirect([status], url) : redirect. 기본 응답 값은 302다.
- res.send(body), res.send(status, body) : 클라이언트에 응답을 보냄. 상태 코드는 옵션. 기본 콘텐츠 타입은 text/html이므로 text/plain을 보내려면 res.set(‘Content-Type’, ‘text/plain’)을 먼저 호출 해야한다. JSON을 보낼거면 res.json을 쓰자.
- res.json(json), res.json(status, json) : 클라이언트로 JSON 값을 보냄.
- res.jsonp(json), res.jsonp(status, json) : 클라이언트로 JSONP 값을 보냄.
- res.type(type) : Contents-Type 헤더를 설정할 수 있는 간단한 메서드.
- res.format(object) : Accept 요청에 따라 다른 콘텐츠를 전송할 수 있는 메서드. 잘 안 쓸듯.
- res.attachment([filename]), res.download(path, [filename], [callback]) : 클라이언트에게 파일을 표시하지 말고 다운로드 받으라고 전송함. filename을 주면 파일 이름이 명시되며, res.attachment는 헤더만 설정하므로 다운로드를 위한 node 코드가 따로 필요핟.
- res.sendFile(path, [options], [callback]) : path의 파일을 읽고 해당 내용을 클라이언트로 전송한다.
- res.links(links) : Links 응답 헤더를 설정한다. 별로 필요 없을 듯.
- res.locals, res.render(view, [locals], callback) : res.locals는 뷰를 렌더링하는 기본 콘텍스트를 포함하는 객체다. res.render는 jade와 같은 템플릿 엔진을 사용하여 뷰를 렌더링한다. 뷰 렌더링 세계는 심오하므로 여기서는 자세히 쓰지 않는다.
출처: http://luckyyowu.tistory.com/346 [요우의 내맘대로 블로그]
'Language > JavaScript' 카테고리의 다른 글
Monitoring MongoDB connection status (0) | 2019.02.14 |
---|---|
node.js express에서 CORS 허용하기 (0) | 2019.02.04 |
[nodeJs] PM2 - 2 (0) | 2018.12.12 |
[Nodejs] pm2 cluster 모드 사용 시 log4js 로그 미출력 시 (0) | 2018.12.12 |
react-router :: 1장. 리액트 라우터 사용해보기 (1) | 2018.10.12 |