개발공부

익스프레스의 요청 객체와 응답 객체

아리단길아조씨 2024. 1. 24. 01:02
728x90

요청 객체 : 클라이언트에서 서버로 넘겨주는 요청 정보를 담고 있다.
응답 객체: 서버에서 클라언트로 넘겨주는 응답 정보를 담고 있다.

요청 객체의 주요 속성
클라이언트가 보낸 요청 정보를 처리할 때 자주 사용하는 속성

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 형식으로 변환하거나 일반 텍스트로 전송한다.

app.get("/", (req, res)=> {
    res.status(200); // 응답 코드를 200번으로 설정.
    res.send("X됐어요!!!"); // 응답 객체인 res객체에서 send함수를 사용하면 응답을 화면에 표시할 수 있다.
});

'/' 라우트에서 GET 메서드가 발생하면 상태 메시지를 200으로 설정하고, 괄호 안에 있는 문자열을 클라이언트로 전송하라는 의미 => localhost:3000/ 으로 요청하면 브라우저 창에 "X됐어요!!!"를 표시함.

JSON 형식으로 변환하기 - res.json 함수
res.json(); 에서 괄호 안의 객체나 배열을 JSON 형식으로 변환해서 전송한다.

res.
JSON 형식으로 잘 전송이 되었다.
JSON 형식을 확인 할 수 있다.


파일을 클라이언트로 보내기 - res.sendFile 함수
요청이 들어왔을 때 특정 HTML 문서를 보여주려면 sedFile 함수를 사용해야 한다.
함수에서 지정한 파일을 읽어서 그 내용을 응답으로 전송해준다.

const path = require("path"); 
=> HTML 파일을 가져오려면 파일 경로가 포함이 되기 때문에 app.js 의 시작 부분에서 path 패키지를 가져오는 코드를 추가 한다.

res.sendFile(__dirname + "/파일 경로/파일 이름");
=> __dirname은 현재 파일의 절대 경로를 가져오므로 거기에 연결해서 절대경로를 만들어서 사용한다.

res.sendFile 함수로 html 파일 가져오기


상태 코드 설정하기 - res.status 함수
애플리케이션을 만들 때 항상 상태코드를 지정을 해야하는 것은 아니다. 상태코드를 설정하지 않았다면 기본적으로 상태코드는 200으로 설정이 된다.(200은 응답에 성공했다는 상태 코드)
애플리케이션 마다 상태코드를 확인해서 그에 따라 다르게 처리해야 할 경우가 있는데 이럴 때 사용하는 것이 바로 
res.status 함수를 사용해서 상태 코드를 설정한다.

// 새 연락처 추가하기
app.post("/contacts", (req, res) => {
    res.status(201);
    res.send("Create Contacts")
});

상태 코드 201 => 요청이 성공적으로 처리되어 새로운 자료가 생성이 되었다.