본문 바로가기

Services/Etc

req.params와 req.body의 차이

req.params는 경로 매개변수를 담고 있으며 URL의 일부로 전달되는 데이터이다. 경로에 ":" 를 사용하며 정의된다.

req.body 객체로 접근하며 JSON 형태의 데이터나 폼 데이터 등을 포함할 수 있다.

 

req.params 예시

const productService = require('../services/productService')
const { catchAsync } = require('../utils/error')

const getProductById = catchAsync(async (req, res) => {
    const productId = +req.params.productId
    const result = await productService.getProductById(productId)
    res.status(200).json({ data : result })
})

const getAllProducts = catchAsync(async (req, res) => {
    const {categoryId, size, orderBy} = req.query
        const data = await productService.getAllProducts(categoryId, size, orderBy)
        res.status(200).json({ data })
})

module.exports = { getProductById, getAllProducts }

예를 들어 /users/:userId와 같은 경로가 있다면 userId가 경로 매개변수이다.

req.params 객체는 경로 매개변수의 이름을 키로 가지며, 해당 매개변수의 값이 값으로 저장된다.

클라이언트가 /users/123과 같은 요청을 보내면 req.params.userId는 123으로 설정된다.

 

'+' 기호는 문자열을 숫자로 변환하는 역할을 한다. 이것은 주로 문자열을 숫자형으로 형변환할 때 사용한다.

클라이언트가 /users/123과 같은 URL을 요청한 경우, req.params.productId는 문자열 123이 된다.

이를 +기호와 함께 사용하여 숫자형으로 변환하면 productId 변수에는 숫자 123이 저장된다

 

 

 

 

 

req.body 예시

const userService = require("../services/user.service");
const { catchAsync } = require("../utils/error");

const signUp = catchAsync(async (req, res) => {
  const { email, password } = req.body;

  await userService.signUp(email, password);

  res.status(201).json({ message: "user is created" });
});

const signIn = catchAsync(async (req, res) => {
  const { email, password } = req.body;

  const accessToken = await userService.signIn(email, password);

  res.status(200).json({ accessToken });
});

module.exports = { signUp, signIn };