
π―
express-validatorλΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅ν΄ μ¬μ©μ μμ²μ μ ν¨μ±μ κ²μ¦ν©λλ€.
μ ν¨μ± κ²μ¬λ μ¬μ©μκ° μ λ ₯ν κ°μ΄ νλΉνμ§ νμΈνλ κ³Όμ μ λλ€.
express-validatorμ ν¨μ± κ²μ¬λ₯Ό μν΄ express-validator ν¨ν€μ§λ₯Ό μ€μΉν©λλ€.
$ npm install express-validator
express-validator μμ±req.body: HTTP μμ²μ λ³Έλ¬Έμ μλ―Ένλ©°, κ°μ²΄, λ°°μ΄ λ±μ λ°μ΄ν°λ₯Ό ν¬ν¨ν μ μμ΅λλ€.
req.params: URL κ²½λ‘μμ μΆμΆλ λ§€κ°λ³μλ₯Ό ν¬ν¨νλ κ°μ²΄μ
λλ€.
req.query: μμ² URLμ 쿼리 λ¬Έμμ΄μμ μ λ¬λ λ°μ΄ν°λ₯Ό ν¬ν¨νλ κ°μ²΄μ
λλ€.
const express = require('express');
const { query, validationResult } = require('express-validator');
const app = express();
app.use(express.json());
app.get('/hello', query('person').notEmpty(), (req, res) => {
const result = validationResult(req);
if (result.isEmpty()) {
return res.send(`Hello, ${req.query.person}!`);
}
res.send({ errors: result.array() });
});
app.listen(3000);
{
"errors": [
{
"location": "query",
"msg": "Invalid value",
"path": "person",
"type": "field"
}
]
}
POST μμ²μμ express-validator μ¬μ©const express = require('express');
const router = express.Router();
const conn = require('../mariadb');
const { body, param, validationResult } = require('express-validator');
// JSON νμ± λ―Έλ€μ¨μ΄ β¨router.use()κ° μλλΌ express.json()μ΄ λ―Έλ€μ¨μ΄β¨
router.use(express.json());
// κ²°κ³Ό νμΈ λ° μλ¬ κ²μ¦ λ―Έλ€μ¨μ΄
const validate = (req, res, next) => {
const err = validationResult(req);
if (!err.isEmpty()) {
return res.status(400).json(err.array());
} else {
return next();
}
};
router
.route('/')
.post(
[
body('userId').notEmpty().isInt().withMessage('μ«μ μ
λ ₯ νμ'), // μ ν¨μ± κ²μ¦ λ―Έλ€μ¨μ΄
body('name').notEmpty().isString().withMessage('λ¬Έμ μ
λ ₯ νμ'),
validate,
],
(req, res, next) => {
const { name, userId } = req.body;
const sql = 'INSERT INTO authors (name, user_id) VALUES(?, ?)';
const values = [name, userId];
conn.query(sql, values, (err, results) => {
if (err) {
return res.status(400).end();
}
res.status(201).json(results);
});
}
)
body('userId').notEmpty().isInt() β userIdκ° λΉ κ°μ΄ μλλ©΄μ μ μμΈμ§ νμΈν©λλ€.
body('name').notEmpty().isString() β nameμ΄ λΉ κ°μ΄ μλλ©΄μ λ¬Έμμ΄μΈμ§ νμΈν©λλ€.
validate λ―Έλ€μ¨μ΄λ₯Ό μ¬μ©ν΄ μ ν¨μ± κ²μ¬ κ²°κ³Όλ₯Ό νμΈνκ³ , μ€ν¨ μ μ€λ₯ λ©μμ§λ₯Ό λ°νν©λλ€.
π€ λ―Έλ€μ¨μ΄(Middleware)λ?
μμ²(req)κ³Όμλ΅(res)μ¬μ΄μμ μ€νλλ ν¨μμ λλ€.- λ€μ λ―Έλ€μ¨μ΄λ‘ λμ΄κ°κΈ° μν΄μλ
next()λ₯Ό νΈμΆν΄μΌ ν©λλ€.next()λ₯Ό νΈμΆνμ§ μμΌλ©΄ μμ²μ΄ λ©μΆ°λ²λ¦¬κ³ , λ€μ λ¨κ³λ‘ μ§νλμ§ μμ΅λλ€.- κ²½λ‘ μΈμλ₯Ό λ£μ§ μμΌλ©΄ λͺ¨λ μμ²μμ μ€νλ©λλ€.
express-validator λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ μ ν¨μ± κ²μ¬λ₯Ό μ μ©μν€λ©΄μ μλ¬μ λͺ¨λ κ²½μ°μ λν΄ νΈλ€λ§μ ν λμ μ½λκ° κ²¬κ³ ν΄μ§ λλμ΄ λ€μμ΅λλ€.
