๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL

[๋ฐ๋ธŒ์ฝ”์Šค] ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ: express-validator ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ํ‚ํ‚์ž‰ 2025. 5. 1. 20:57

 

์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ express-validator ์‚ฌ์šฉํ•˜๊ธฐ

์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ž€?

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์š”๊ตฌํ•˜๋Š” ์กฐ๊ฑด์— ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

express-validator ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Express์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฏธ๋“ค์›จ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

์ฑ„๋„ ๋“ฑ๋ก API์—์„œ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ตฌํ˜„:

.post(
    [
      // userId ํ•„๋“œ ๊ฒ€์ฆ
      body("userId")
        .notEmpty()
        .isInt()
        .withMessage("์ˆซ์ž ์ž…๋ ฅ ํ•„์š”"),
      
      // name ํ•„๋“œ ๊ฒ€์ฆ  
      body("name")
        .notEmpty()
        .isString()
        .withMessage("๋ฌธ์ž ์ž…๋ ฅ ํ•„์š”"),
      
      // ๊ฒ€์ฆ ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ ๋ฏธ๋“ค์›จ์–ด
      validator,
    ],
    (req, res) => {
      const { name, userId } = req.body;
      // ... ๋‚˜๋จธ์ง€ ๋กœ์ง
    }
)
 
j

๊ฒ€์ฆ ๋ฏธ๋“ค์›จ์–ด

function validator(req, res, next) {
  const err = validationResult(req);
  if (!err.isEmpty()) {
    return res.status(400).json(err.array());
  }
  next();
}
 

express-validator๋Š” ๋ผ์šฐํ„ฐ ํ•ธ๋“ค๋Ÿฌ์— ๋ฏธ๋“ค์›จ์–ด๋กœ ์ „๋‹ฌ๋˜์–ด ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ , ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ 400 ์—๋Ÿฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€์ˆ˜0