[Node.js_4기] Today_I_Learn : request와 response (24/01/24)

2024. 1. 24. 19:48공부/내배캠 TIL

목차

 

1. 학습 내용

2. 내용 정리

3. 예제

 

1. 학습 내용 

 

1. 요청(Request)과 응답(Response)를 명확하게 이해합니다.
2. Express.js의 req, res 객체가 가지고 있는 메서드를 이해합니다.
3. Express.js에서 요청(Request)과 응답(Response)을 표현하는 방법을 학습합니다

Express.js는 http모듈을 확장하여 추가적인 메서드나 속성을 제공해준다.

 

2. 내용 정리 

 

1. Request와 Response

- Request란 클라이언트가 서버에게 전달하려는 정보나 메시지를 담는 객체를 의미합니다. 

URL, Http method, 헤더(header), 쿼리 파라미터(query parameter), 바디 데이터(body data)등이 포함됩니다.
- Response란 서버에서 클라이언트로 응답 메시지를 전송시켜주는 객체입니다.

상태 코드(status code), 응답 데이터(response data), 응답 헤더(response header) 등이 포함됩니다.

 

Express.js의 통신 흐름

더보기

1. 클라이언트는 특정 URL과 데이터를 담은 요청(Request)을 서버에 전송합니다.
2. 서버는 받은 데이터에 따라 필요한 비즈니스 로직을 수행합니다.
3. 서버는 처리된 결과를 클라이언트에게 응답(Response)으로 보내줍니다.

2. req객체와 res객체

req 객체

요청(Reuqest)  : 클라이언트에서 서버로 보내는 메시지

body, params, query : 클라이언트가 서버에 요청(Request)을 보낼 때 데이터를 전송하는 방법들

더보기

- req.app : req 객체를 통해 Express.js의 app 객체에 접근할 수 있습니다.
- req.ip : 요청한 Client의 ip 주소가 담겨 있습니다.
- req.body : Request를 호출할 때 body로 전달된 정보가 담긴 객체입니다.

(`express.json()` Middleware를 이용하여야 해당 객체를 사용할 수 있습니다.)
- req.params : 라우터 매개 변수(Path Params)에 대한 정보가 담긴 객체입니다.
- req.query : Request를 호출할 때 쿼리 스트링으로 전달된 정보가 담긴 객체입니다.
- req.cookies: Request를 호출할 때 Cookie 정보가 담긴 객체입니다.

(`cookie-parser` Middleware를 이용하여야 해당 객체를 사용할 수 있습니다.)
- req.get(Header): 헤더에 저장된 값을 가져오고 싶을 때 사용합니다.

res 객체

응답(Response) : 서버에서 클라이언트에게 보내는 메시지

status :  서버가 클라이언트에게 응답(Response)를 보낼 때 Http 상태 코드를 전송하는것

send, json : 서버가 클라이언트에게 응답(Response) 데이터를 전송하는 방법

더보기

- res.app : res 객체를 통해 Express.js의 app 객체에 접근할 수 있습니다.
- res.status(코드) : Response에 HTTP 상태 코드를 지정합니다.
(https://developer.mozilla.org/ko/docs/Web/HTTP/Status)
- res.send(데이터) : 데이터를 포함하여 Response를 전달합니다.

(ex : res.send('Hello, World');)
- res.json(JSON) : JSON 형식으로 Response를 전달합니다.
(ex : res.json({ message: 'Hello, World' });)
- res.end() : 데이터 없이 Response를 전달합니다.
- res.redirect(주소) : 리다이렉트할 주소와 함께 Response를 전달합니다.
(ex : res.redirect('https://naver.com');)
- res.cookie(Key, Value, Option) : 쿠키를 설정할 때 사용합니다.
- res.clearCookie(Key, Value, Option) : 쿠키를 제거할 때 사용합니다.

 

3. 예제 

Express.js의 Request, Response

Request

// req.body: (Body)
app.post('/', (req, res) => {
  // Request에서 body 데이터를 ReqBody 변수에 할당한다.
  const ReqBody = req.body;
  return res.status(201).json({});
});
// 클라이언트가 request를 보냈을 때, Body에 데이터를 삽입했을 때 사용.
// post, put 메서드에 사용된다.

// req.query: (Query String)
app.get('/', (req, res) => {
  // Request에서 Query String 데이터를 ReqQuery 변수에 할당한다.
  const ReqQuery = req.query;
  return res.status(200).json({});
});
// 클라이언트가 request를 보냈을 때, URL에 원하는 Key-Value를 삽입하여 데이터를 전달.
// URL 마지막에 ?를 넣어 사용 가능.
// ex) https://sparta.com/posts?sort=desc&page=3&limit=20

// req.params: (Path Variable)
app.get('/:name', (req, res) => {
  // Request에서 Path Params 데이터의 name Key를 가진 Value를 name 변수에 할당한다.
  const { name } = req.params;
  return res.status(200).json({});
});
// 클라이언트가 요청(Request)을 보냈을 때, URL에 원하는 데이터를 삽입하여 전달
// URL 특정 경로를 매개 변수로써 사용합니다. 
// -> 프로젝트에서 _id를 받아 물품의 상세 정보 페이지를 보거나 수정시에 사용했다.

Response

// res.status
app.post('/', (req, res) => {
  return res.status(201).json({key: 'Value'});
});
// -> 서버에 response를 보냈을때, 상태코드 전달.(ex:200=성공/404실패)
 
 // res.json(JSON), res.send(데이터)
 app.post('/', (req, res) => {
  return res.status(201).json({key: 'Value'});
});
// -> 서버에 response를 보냈을때, 데이터를 전달
// json은 json형식으로 전달, send는 더 다양한 형식으로 전달

 

 

 

이번 TIL을 마지막으로 Node.js 입문주차 내용은 끝내기로 했다.
(나머지는 db연결이나 aws 사용법 같은  프로젝트 진행사항이라 굳이 내용 정리까지 할 필요는 없을것 같다는 판단이다.)

금일(24일) 숙련주차 강의를 시작했고, 이번 주차는 시작부터 SQL이라 상당히 머리가 아프다.

"이게 대체 왜 안되?"의 연속.