응답 객체 -response
res.app: 똑같이 res 객체를 통해 app 객체에 접근한다. res.app.get('')같이 사용 가능
res.set(헤더, 값) / res.setHeader(헤더, 값): 응답의 헤더를 설정
res.status(코드) / res.sendStatus(코드): 응답 시의 HTTP 상태 코드를 지정
res.type(type): Contents-Type 헤더를 설정할 수 있는 간단한 메서드
res.cookie(키, 값, 옵션): 쿠키를 응답에 설정하는 메서드(cookie-parser 패키지가 필요)
res.clearCookie(키, 값, 옵션): 쿠키를 응답에서 제거하는 메서드
res.end(): 데이터 없이 응답을 보냄
res.json(JSON): JSON 형식의 응답을 보냄
res.redirect(주소): 리다이렉트할 주소와 함께 응답을 보냄
res.locals / res.render(뷰, 데이터):
-> res.locals는 뷰를 렌더링하는 기본 컨텍스트를 포함하는 객체
-> res.render는 jade와 같은 템플릿 엔진을 사용하여 뷰를 렌더링
res.send(body), res.send(status, body): 클라이언트에 응답을 보냄 (상태코드는 옵션)
-> 기본 콘텐츠 타입은 text/html이므로 text/plain을 보내려면 res.set('Content-Type', 'text/plain')을 먼저 호출해야 함
res.sendFile(경로): 경로에 위치한 파일을 응답
res.end()
res.json(JSON)
res.redirect(주소)
res.render(뷰, 데이터)
res.send(데이터)
res.sendFile(경로)
는 각 라우터에 반드시 한 번만 써야함
요청 객체 - request
req.app: req 객체를 통한 app 객체로의 접근 (ex / req.app.get('port'))
req.cookies: cookie-parser 미들웨어가 만드는 요청의 쿠키를 해석한 객체
req.signedCookies: 서명된 쿠키들은 req.cookies 대신 여기에 담김
req.get(헤더 이름): 헤더의 값을 가져옴
req.body: body-parser 미들웨어가 만드는 요청의 본문을 해석한 객체, POST 방식으로 넘어오는 데이터를 담음
req.params: 라우트 매개변수에 대한 정보가 담김
req.query: GET방식으로 넘어오는 데이터, 쿼리스트링의 정보가 담김
req.route: 현재 라우트에 관한 정보, 디버깅용
req.headers: HTTP의 Header 정보를 가지고 있음
req.accepts([types]): 클라이언트가 해당하는 타입을 받을 수 있는 지 확인하는 메서드
req.ip: 요청의 ip 주소를 담음
req.path: 클라이언트가 요청한 경로. 프로토콜, 호스트, 포트, 쿼리스트링을 제외한 순수 요청 경로
req.host: 요청 호스트 이름을 반환하는 메서드. 조작될 수 있으므로 보안 목적으로는 사용X
req.xhr: 요청이 ajax 호출로 시작되었다면 true를 반환하는 프로퍼티
req.protocol: 현재 요청의 프로토콜 (http, https 등)
req.secure: 현재 요청이 보안 요청이면 true를 반환
req.url (req.originalUrl): URL 경로와 쿼리스트링을 반환. 원본 요청을 logging하는 목적으로 많이 쓰임
req.acceptedLanguages: 클라이언트가 선호하는 자연어 목록을 반환. header에서 파싱하면 다국어를 지원하는 어플리케이션이라면 초기 언어 선택에 도움을 줄 수 있음
참조
미들웨어
서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어
미들웨어는 더욱 빠르게 혁신할 수 있도록 애플리케이션을 지능적이고 효율적으로 연결하는 기능을 제공
미들웨어를 사용하는 상황
- POST 요청 등에 포함된 body(payload)를 구조화할 때 (쉽게 얻어내고자 할 때)
- 모든 요청/응답에 CORS 헤더를 붙여야 할 때
- 모든 요청에 대해 url이나 메서드를 확인할 때
- 요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때
미들웨어를 이용하면 Node.js 만으로 구현한 서버에서는 번거로울 수 있는 작업을 보다 쉽게 적용할 수 있다
'CodeStates > Backend' 카테고리의 다른 글
Section3 / Unit7 : [Backend]OAuth (0) | 2023.07.04 |
---|---|
Section3 / Unit7 : [Backend]Hashing/Token (0) | 2023.07.03 |
Section3 / Unit7 : [Backend]쿠키/세션 (0) | 2023.07.03 |
Section2 / Unit10 : Web Server(req) (0) | 2023.06.05 |
Section2 / Unit10 : Web server(SOP, CORS) (0) | 2023.06.01 |