본문 바로가기

Frontend Dev/Express

Express 요청 객체 req.body, req.params, req.query 사용 예제

반응형

 req.body req.params req.queryExpress의 요청 객체의 프로퍼티로 각각 요청 본문, 경로 매개변수, 쿼리 매개변수에 접근하기 위해 사용된다. 

 

👾 req.body

 POST 요청의 본문(body)에 포함된 데이터를 나타내는 객체이다. 주로 HTML form이나 AJAX 요청과 같이 POST 메서드를 통해 데이터를 전송할 때 사용된다.

 req.body를 사용하기 전에는 body-parser와 같은 미들웨어를 설정하여 요청 본문을 파싱(parse)할 수 있도록 해야 한다. 파싱하지 않은 요청 본문의 기본값은 undefined이다.

 

const express = require('express')
const app = express()
const port = 3000

// Ex. POST <http://localhost:3000/users>
/** 요청 본문
  {
    "name": "hana",
    "email": "hana@google.com"
  }
 */

app.use(express.json()) // JSON 요청 본문 파싱 미들웨어 등록 

app.post('/users', (req, res) => {
  console.log(req.body) // { name: 'hana', email: 'hana@google.com' }

  // 구조분해할당을 통해 req.body 값 사용하기
  const { name, email } = req.body
  console.log({ name, email }) // { name: 'hana', email: 'hana@google.com' }

  res.send(`New User: ${name}, Email: ${email}`) // New User: hana, Email: hana@google.com
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

 

 

👾 req.params

 라우트 경로에 정의된 매개변수를 포함하는 객체로, 이 객체를 통해 경로에서 추출한 동적인 데이터를 가져올 수 있다.

 

const express = require('express')
const app = express()
const port = 3000

// Ex. GET <http://localhost:3000/users/abc123/post1>

// 라우트 정의
app.get('/users/:id/:post', (req, res) => {
  console.log(req.params) // { id: 'abc123', post: 'post1' }

  // 구조분해할당을 통해 req.params 값 사용하기
  const { id, post } = req.params;
  console.log({ id, post }) // { id: 'abc123', post: 'post1' }

  res.send(`User ID: ${id}, PostName: ${post}`); // User ID: abc123, PostName: post1
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

 → http://localhost:3000/users/abc123/post1 의 경로에 동적인 매개변수 idpost정의

 • id에 전달되는 값: abc123

 • post에 전달되는 값: post1

 

 

👾 req.query

 URL의 쿼리 매개변수를 포함하는 객체로, 쿼리 배겨번수는 URL에 ‘?’ 다음에 키-값으로 전달되는 매개변수를 말한다.

 

const express = require('express')
const app = express()
const port = 3000

// Ex. GET <http://localhost:3000/flight?departure=ICN&destination=JFK>

// 라우트 정의
app.get('/flight', (req, res) => {
  const query = req.query;
  console.log(query) // { departure: 'ICN', destination: 'JFK' }

  // 구조분해할당을 통해 req.query 값 사용하기
  const { departure, destination } = req.query;
  console.log({ departure, destination }) // { departure: 'ICN', destination: 'JFK' }

  res.send(`flight from ${departure} to ${destination}`) // flight from ICN to JFK
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

 → http://localhost:3000/flight?departure=ICN&destination=JFK 의 경로에 req.query를 사용하여 query 매개변수의 값을 가져온다.

 • departure에 전달되는 값: ICN

 • destination에 전달되는 값: JFK

 


✏️ 공부하며 정리한 내용입니다. 잘못된 정보나 더 공유할 내용이 있으면 댓글로 알려주세요!

읽어주셔서 감사합니다 😊

반응형