dh_0e

[Node.js] 강의 내용 개념 정리(6) (Request, Response) 본문

내일배움캠프/Node.js[입문]

[Node.js] 강의 내용 개념 정리(6) (Request, Response)

dh_0e 2024. 5. 15. 21:42

Request (req)

- 클라이언트가 서버에게 전달하려는 정보나 메시지를 담는 객체

- Request의 세부 사항에는 URL, HTTP method, header, query parameter, 바디 데이터 등이 포함됨

 

Response (res)

- 서버에서 클라이언트로 응답 메시지를 전송시켜주는 객체

- Response의 세부 사항에는 상태 코드, 응답 데이터, 응답 헤더 등이 포함됨

 

서버 모듈: Node.js의 서버 모듈에는 대표적으로 http 모듈과 Express.js가 존재

- Express.js는 http 모듈을 확장하여 제공

- Express.js는 기존 http 모듈의 메서드도 사용할 수 있지만, Express.js가 추가 제공하는 메서드나 속성들 사용 가능

- Express.js의 메서드가 더욱 편리하기에 http모듈 거의 사용 x

 

Express.js의 흐름

1. 클라이언트는 특정 URL과 데이터를 담은 요청을 서버에 전송

2. 서버는 받은 데이터에 따라 필요한 비즈니스 로직을 수행

3. 서버는 처리된 결과를 클라이언트에게 응답으로 보내줌

 

 

Express.js의 req, res 객체

더보기

req 객체 (Client -> Server)

  • 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 객체 (Server -> Client)

  • res.app : res 객체를 통해 Express.js의 app 객체에 접근할 수 있습니다.
  • res.status(코드) : Response에 HTTP 상태 코드를 지정합니다.
  • 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를 전달합니다.
  • res.cookie(Key, Value, Option) : 쿠키를 설정할 때 사용합니다.
  • res.clearCookie(Key, Value, Option) : 쿠키를 제거할 때 사용합니다.

Express.js의 Response (Remind)

- 서버에서 클라이언트(사용자)에게 보내는 메시지를 응답(Response)이라 부름

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

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

- 분기 처리를 잘 못하여 Response가 2번 이상 보내지면 서버가 종료되는 문제 발생

 

Express.js의 Request (Remind)

- 클라이언트(사용자)에서 서버로 보내는 메시지

- body, params, query는  클라이언트가 서버에 요청(Request)을 보낼 때 데이터를 어떤 방식으로 전송하는지에 대한 방법

 

Request 리소스를 구분하기 위한 속성 (API 호출 시 데이터를 넘기는 방식)

req.body: (Body)

- Key-Value의 객체 형식, JSON 형태를 띔

- Query String, Path Variable과 다르게 URL만을 가지고 어떤 데이터를 전달했는지 확인할 수 없음 >> 보안이 좋음

- 데이터를 생성하거나 수정이 필요한 데이터의 전달을 위해 사용됨 ex) 사용자의 ID, PW, 게시글 제목 등

- POST, PUT과 같은 Http 메서드에서 사용됨

 

req.query: (Query String)

- 요청에서 URL에 원하는 Key-Value를 삽입하여 데이터를 전달

- URL의 마지막에 ? 기호를 이용해 사용

- 특정 콘텐츠의 위치를 표시하거나 웹 페이지에 특정한 옵션을 설정할 때 사용 ex) 게시글 정렬 or 특정 게시글 출력

- 주로 서버의 리소스를 필터링하거나 정렬하는데 사용됨

ex1) http://dh-0e.tistory.com/posts?name=김동헌&age=23

ex2) https://-----.com/posts?sort=desc&page=3&limit=20

  • limit=20: 1 페이지당 20개의 게시글을 조회한다.
  • page=3: 3 페이지를 조회한다.
  • sort=desc: 게시글을 내림차순으로 정렬한다.

req.params: (Path Variable)

- 요청에서 URL에 원하는 데이터를 삽입하여 전달

- URL 특정 경로를 매개 변수로써 사용

- URL을 /:name 으로 설정했다고 가정하면 req.params를  통해 사용할 수 있고, 해당 데이터를 params 변수에 할당하여, 그 중  params.name을 따로 추출하여 사용함

- 특정 게시글을 성택하거나 명확한 리소스를 지정해야할 때 사용

by ChatGPT