[Javascript] joi

[์›๋ณธ ๋งํฌ]

์„œ๋ฒ„ ๋กœ์ง์„ ์งœ๋“ , ๊ธฐํƒ€ ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ์งœ๋“ ๊ฐ„์— ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์€ ํ•ญ์ƒ ๋นผ๋†“์„ ์ˆ˜ ์—†๋Š” ๋ถ€๋ถ„์ด๋‹ค.

๋งŒ์•ฝ ์ด๋ฆ„๊ณผ ๋‚˜์ด๊ฐ’์„ ๋ฐ›๋Š” foo๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์น˜์ž.
๊ทธ๋ ‡๋‹ค๋ฉด foo ํ•จ์ˆ˜๋Š” ๋“ค์–ด์˜จ ์ด๋ฆ„๊ฐ’๊ณผ ๋‚˜์ด๊ฐ’์ด ์œ ํšจํ•œ์ง€๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒ€์ฆํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.
์ด๋ฆ„์€ ๋‹น์—ฐํžˆ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•˜๊ณ , ๋‚˜์ด๋Š” ๋‹น์—ฐํžˆ ์ˆซ์ž์—ฌ์•ผ ํ•œ๋‹ค.

๊ทธ๋Ÿฐ ๋กœ์ง ์ฒดํฌ๋ฅผ ์†์œผ๋กœ ํ•˜๋ฉด ๋Œ€์ถฉ ์•„๋ž˜์™€ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

์ผ๋‹จ ๋‹น์—ฐํžˆ ๋™์ž‘์€ ํ•˜์ง€๋งŒ, ๊น”๋”ํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.

๊ฐ’์ด ๋งŽ์œผ๋ฉด ๋งŽ์„์ˆ˜๋ก ์ฝ”๋“œ๊ฐ€ ์กฐ์žกํ•ด์งˆ ๊ฒƒ์ด๊ณ , ์ข€๋” ์„ธ์‹ฌํ•œ ๊ฒ€์ฆ์ด ํ•„์š”ํ• ์ˆ˜๋ก ์ฝ”๋“œ์˜ ๋ณต์žก๋„๋Š” ํ•˜๋Š˜์„ ๋šซ์„ ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ ๊ฒ€์ฆ๊ณผ์ •์„ ์ข€ ์‰ฝ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜๊ฐ€ joi๋ผ๋Š” ์นœ๊ตฌ๋‹ค. javascript object scehma์˜ ์ถ•์•ฝ์œผ๋กœ,
๋‹ค๋ฅธ ๊ฒƒ๋„ ์žˆ์ง€๋งŒ ์ด๊ฒŒ ์ข€ ์ธ๊ธฐ๊ฐ€ ๋งŽ์€ ํŽธ์ด๋‹ค.

์„ค์น˜ํ•˜๊ณ ,

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒ€์ฆ์šฉ ์Šคํ‚ค๋งˆ ๊ฐ’์„ ์ƒ์„ฑํ•œ๋‹ค.

๊ฒ€์ฆํ•  ๊ฐ’์ด ์œ„์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ–์ถฐ์•ผ๋งŒ ํ•จ์„ ๋ช…์‹œํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.
name๊ณผ age๋ผ๋Š” ํ‚ค๊ฐ’์„ ๊ฐ–๋Š” ๊ฐ์ฒด์ด๋ฉฐ.
name์€ ๋ฌธ์ž์—ด์ด๋ฉฐ ํ•„์ˆ˜ํ•ญ๋ชฉ์ด์–ด์•ผ ํ•˜๊ณ ,
age๋Š” ์ •์ˆ˜์ด๋ฉฐ ์ตœ์†Œ๊ฐ’์ด 0์ด์–ด์•ผ ํ•จ์„ ์ง€์ •ํ–ˆ๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ ์ €๊ธฐ์—๋‹ค๊ฐ€ ๊ฒ€์ฆํ•  ๊ฐ’์„ ์ง‘์–ด๋„ฃ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.
validate ํ•จ์ˆ˜๋Š” ๊ฐ’์„ ๋ฐ›์•„์„œ value์™€ error์Œ์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๊ฒ€์ฆ์— ์‹คํŒจํ–ˆ๋‹ค๋ฉด error์— ๊ฐ’์ด ๋“ค์–ด์žˆ์„ ๊ฒƒ์ด๊ณ , ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด value์— ๊ฐ’์ด ๋“ค์–ด์˜ฌ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ œ๋Œ€๋กœ ๊ฐ’์„ ๋„ฃ์„ ๊ฒฝ์šฐ์—๋Š”

์ด๋Ÿฐ ์‹์œผ๋กœ ์ž˜ ๋™์ž‘ํ•  ๊ฒƒ์ด๊ณ 

์•„๋‹ˆ๋ผ๋ฉด ๋ญ๊ฐ€ ํ‹€๋ ธ๋Š”์ง€ ์˜ค๋ฅ˜๋ฉ”์„ธ์ง€๋ฅผ ์นœ์ ˆํ•˜๊ฒŒ ๋˜์ ธ์ค„ ๊ฒƒ์ด๋‹ค.

์ด์™ธ์—๋„ ์ด๋ฉ”์ผ ํ˜•์‹ ๊ฒ€์ฆ์ด๋‚˜ ๊ธฐํƒ€ ๋“ฑ๋“ฑ ํŽธ์˜๊ธฐ๋Šฅ์ด ๋งŽ์€๋ฐ,

๋” ์ž์„ธํ•œ ๊ฒƒ์€ ์•„๋ž˜ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.
https://joi.dev/api/?v=17.4.0



์ฐธ์กฐ
https://www.npmjs.com/package/joi
https://joi.dev/api/?v=17.4.0
https://gumpcha.github.io/blog/joi-overview