유효성 검사 (Validation)
클라이언트(사용자)가 보낸 데이터는 절대 믿으면 안 됩니다. 나이를 문자로 보내거나 이메일 형식이 아닌 데이터를 DB에 넣으려다 서버가 터지는 것을 막기 위해, 백엔드 입구에서 데이터를 깐깐하게 검문하는 절차입니다.
const Joi = require("joi");
// 회원가입할 때 들어와야 하는 데이터 규칙(스키마) 정의
const schema = Joi.object({
username: Joi.string().min(3).max(30).required(), // 3~30글자 필수
password: Joi.string().pattern(new RegExp("^[a-zA-Z0-9]{3,30}$")),
email: Joi.string().email() // 진짜 이메일 형식인지 검사
});
app.post("/signup", (req, res) => {
const { error } = schema.validate(req.body);
// 형식이 하나라도 틀리면 400 에러와 함께 빠꾸! (DB까지 가지도 않음)
if (error) return res.status(400).send(error.details[0].message);
res.send("검증 통과! 회원가입 진행");
});