요청 객체 : 클라이언트에서 서버로 넘겨주는 요청 정보를 담고 있다.
응답 객체: 서버에서 클라언트로 넘겨주는 응답 정보를 담고 있다.
요청 객체의 주요 속성
클라이언트가 보낸 요청 정보를 처리할 때 자주 사용하는 속성
1. req.body : 서버로 POST 요청할 때 넘겨준 정보를 담고 있음.
ex) 로그인 버튼을 눌렀을 때 사용자의 아이디와 비밀번호의 값이 req.body에 담겨있다.
2. req.cookies : 클라이언트에 저장된 쿠키 정보를 서버로 함께 넘겼을 경우 쿠키 정보를 담고 있다.
3. req.header : 서버로 요청을 보낼 때 같이 보낸 헤더 정보를 담고 있다.
4. req.params : URL뒤에 라우트 파라미터가 포함되어 있을 경우 파라미터 정보를 담고 있다.
ex) 라우트 파라미터의 기본형 : /요청URL/:id (보통 변수 이름은 id를 사용하지만 원한다면 다른 이름도 사용 가능)
5. req. query : 요청 URL에 포함된 질의 매개변수(쿼리)를 담고 있음
ex) 검색 사이트에서 검색어를 입력하고 검색 버튼을 눌렀을 때 검색어와 관련된 질의 매개변수가 req.query에 담긴다.
응답 객체에서 사용하는 함수
클라이언트로 응답을 보낼 때 응답 객체를 사용한다.
응답 객체에는 응답을 보낼 때 사용하는 다양한 함수를 포함하고 있다.
1. res.download : 파일을 내려받는다.
2. res.end : 응답 프로세스를 중지시킨다.
3. res.json : JSON 응답을 전송한다.
4. res.jsonp : JSONP 지원을 통해 JSON 응답을 전송한다.
5. res.redirect : 요청 경로를 재지정해서 강제 이동한다.
6. res.render : 뷰 템플릿 화면에 랜더링한다.
7. res.send : 어떤 유형이든 res.send() 괄호 안의 내용을 전송한다.
8. res.sendFile : 지정한 경로의 파일을 읽어서 내용을 전송한다.
9. res.sendStatus : 상태 메시지와 함께 HTTP 상태 코드를 전송한다.
10. res.status : 응답의 상태 코드를 설정한다.
자주 사용하는 함수 살펴보기
클라이언트로 보내기 - res.send 함수
res.send(); 에서 어떤 형태이든 상관 없이 괄호 안의 내용을 클라이언트에게 전송하는 함수이다.
Content-Type 헤더를 자동으로 만들고 내용을 JSON 형식으로 변환하거나 일반 텍스트로 전송한다.
'/' 라우트에서 GET 메서드가 발생하면 상태 메시지를 200으로 설정하고, 괄호 안에 있는 문자열을 클라이언트로 전송하라는 의미 => localhost:3000/ 으로 요청하면 브라우저 창에 "X됐어요!!!"를 표시함.
JSON 형식으로 변환하기 - res.json 함수
res.json(); 에서 괄호 안의 객체나 배열을 JSON 형식으로 변환해서 전송한다.
파일을 클라이언트로 보내기 - res.sendFile 함수
요청이 들어왔을 때 특정 HTML 문서를 보여주려면 sedFile 함수를 사용해야 한다.
함수에서 지정한 파일을 읽어서 그 내용을 응답으로 전송해준다.
const path = require("path");
=> HTML 파일을 가져오려면 파일 경로가 포함이 되기 때문에 app.js 의 시작 부분에서 path 패키지를 가져오는 코드를 추가 한다.
res.sendFile(__dirname + "/파일 경로/파일 이름");
=> __dirname은 현재 파일의 절대 경로를 가져오므로 거기에 연결해서 절대경로를 만들어서 사용한다.
상태 코드 설정하기 - res.status 함수
애플리케이션을 만들 때 항상 상태코드를 지정을 해야하는 것은 아니다. 상태코드를 설정하지 않았다면 기본적으로 상태코드는 200으로 설정이 된다.(200은 응답에 성공했다는 상태 코드)
애플리케이션 마다 상태코드를 확인해서 그에 따라 다르게 처리해야 할 경우가 있는데 이럴 때 사용하는 것이 바로
res.status 함수를 사용해서 상태 코드를 설정한다.
상태 코드 201 => 요청이 성공적으로 처리되어 새로운 자료가 생성이 되었다.
'개발공부' 카테고리의 다른 글
미들웨어 : "도우미 필요하신 분?" 익스프레스 : "하잇!"(미완성) (0) | 2024.01.25 |
---|---|
익스프레스에서 라우팅하기 (1) | 2024.01.24 |
익스프레스 서버 만들기(감자 서버) (0) | 2024.01.23 |
HTTP 모듈로 서버 만들고 실행해보기 (0) | 2024.01.18 |
Node.js 주특기 입문 1일차 (0) | 2024.01.17 |