35. Node.js 입문주차 - request, response (항해 12일차)

코이그·2023년 4월 14일

항해99

목록 보기
34/54

Request, response

클라이언트가 서버에게 전달하려는 메세지를 담는 객체.
서버에서 클라이언트로 응답 메세지를 전송시켜주는 객체.

Request

Request 객체에서 가장 많이 쓰이는 변수: query, params, body

req.query

app.get("/", (req, res) => {
  // req.query
  console.log(req.query);
  res.send("정상적으로 반환되었습니다.");
});

API client나 브라우저에서 localhost:3000/?key=value에 get 요청을 보낼 때 req.query에 {key: "value"} 객체가 저장된다.

req.params

app.get("/:id", (req, res) => {
  // req.params
  console.log(req.params);

  res.send(":id URI에 정상적으로 반환되었습니다.");
});

req.query와 굉장히 유사한데, 차이점은 key값을 uri 부분에서 지정해준다. 예를 들어서 localhost:3000/value에 요청을 보내면 req.params에는 {id: "value"} 객체가 저장된다. req.query에서는 키-값 둘 다 지정해준다면 req.params는 ?key=value 대신 값 하나만 받아서 지정된 키와 묶어주는 느낌..?

req.body

// 1
app.use(express.json());

// 2
app.post("/", (req, res) => {
  console.log(req.body);

  res.send("기본 uri에 POST 메소드가 정상적으로 실행되었습니다.");
});
  1. req.body를 사용하기 위해서는 express.json()이라는 미들웨어를 프로젝트 전역에 추가해야 한다.
  2. body는 주로 post 메소드에서만 사용한다.

get 메소드가 아니기 때문에 브라우저에서는 확인할 방법이 없지만 이럴 때 API client를 활용하면 편리하다.

서버 실행 후 위 그림처럼 원하는 uri에 POST 메소드를 보낼 때 Body 칸에 JSON형식(js의 객체와 동일)으로 추가를 해주고 요청을 보내면 req.body에 그 값이 객체로 저장된다.

Response

Response 객체에서 가장 많이 쓰이는 메소드: send, json, status

send

app.get("/", (req, res) => {
  res.send("정상적으로 반환되었습니다.");
});

데이터(응답입니다)를 포함하여 응답을 전달한다.

json

app.get("/", (req, res) => {
  res.json({
    keyKey: "value입니다",
    이름입니다: "이름일까요?",
  });
});

응답을 JSON 형식으로 전달한다.

status

app.get("/", (req, res) => {
  res.status(400).json({
    keyKey: "value입니다",
    이름입니다: "이름일까요?",
  });
});

응답에 HTTP 상태 코드를 지정한다.

profile
COYG🔴⚪

0개의 댓글