TIL ( Validator )

2024. 6. 18. 23:35ใ†TIL

๐Ÿ’กValidation ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

 

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

 : ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„ ํ˜น์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์˜ฎ๊ฒจ์ง€๊ธฐ ์ „, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š”์ง€ ํ™•์ธ, ๊ฒ€์ฆํ•˜๋Š” ์ž‘์—…์„ ๋งํ•œ๋‹ค.

 

2. Joi

 : Joi๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ํšจํ•œ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ์„ if๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ์—๋Š” ๊ฒ€์ฆํ•˜๊ธฐ ํž˜๋“ค์–ด์ง„๋‹ค. ์ด๋Ÿฌํ•  ๊ฒฝ์šฐ Joi๋ฅผ ์ด์šฉํ•˜์—ฌ ์Šคํ‚ค๋งˆ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์ „์— ๊ฐ ํ•„๋“œ๋ณ„ ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ธฐ์ค€์„ ์ •ํ•ด์ฃผ๊ณ , ํ•„์š”ํ•œ ๊ณณ์— ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ์— ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3.Joi ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ

joi - npm (npmjs.com)

 

joi

Object schema validation. Latest version: 17.13.1, last published: 2 months ago. Start using joi in your project by running `npm i joi`. There are 12291 other projects in the npm registry using joi.

www.npmjs.com

- Joi ์„ค์น˜ํ•˜๊ธฐ

$ yarn add Joi

 

- ์ฝ”๋“œ ์ž‘์„ฑ(์˜ˆ์‹œ)

import Joi from "joi";
import { MESSAGES } from "../../constants/message.constant.js";

const schema = Joi.object({
    email: Joi.string().email().required().messages({
        'any.required': MESSAGES.AUTH.COMMON.EMAIL.REQUIRED,
        'string.email': MESSAGES.AUTH.COMMON.EMAIL.INVALID_FORMAT,
    }),
    password: Joi.string().required().messages({
        'any.required': MESSAGES.AUTH.COMMON.PASSWORD.REQUIRED,
    }),
});

 

- email  : string ํƒ€์ž…์— email ํ˜•์‹์œผ๋กœ ์จ์•ผํ•˜๋ฉฐ required ํ•„์ˆ˜ํ•ญ๋ชฉ์ด๋‹ค- password : string ํƒ€์ž…์— required ํ•„์ˆ˜ํ•ญ๋ชฉ์ด๋‹ค.   ์ด๋Ÿฐ ํ˜•ํƒœ ์ด์™ธ์—๋„ min()์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์†Œ ๊ธ€์ž๋ฅผ ์ •ํ•ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.-' any.required ' : ํ•„์ˆ˜ ํ•ญ๋ชฉ์ด ๋ˆ„๋ฝ๋  ๊ฒฝ์šฐ ์—๋Ÿฌ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด์ค€๋‹ค.- ' string.email ' : ์ด๋ฉ”์ผ ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด์ค€๋‹ค.