[๐ŸงฉNestjs] data ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ type ๋ณ€ํ˜•

Aprilยท2022๋…„ 10์›” 23์ผ
0

๐ŸงฉNestJs

๋ชฉ๋ก ๋ณด๊ธฐ
5/6

NestJS Pipes

1. PIPE๋ž€?

  • PiPe๋Š” @Injectable () ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ์ฃผ์„์ด ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค.
  • PiPe๋Š” ๋ฐ์ดํ„ฐ์˜ transformation(type ๋ณ€ํ˜•)๊ณผ validation(์œ ํšจ์„ฑ ๊ฒ€์‚ฌ)์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
    • transformation: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜
      • ์˜ˆ) ๋ฌธ์ž์—ด์—์„œ ์ •์ˆ˜๋กœ
    • validation: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ์œ ํšจํ•œ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ „๋‹ฌ. ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์„ ๋•Œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ
      • ์˜ˆ) ๋งŒ์•ฝ ์ด๋ฆ„์˜ ๊ธธ์ด๊ฐ€ 10์ž ์ดํ•˜์—ฌ์•ผ ํ•˜๋Š”๋ฐ 10์ž ์ด์ƒ ๋˜๋ฉด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ
  • Nest๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ง์ „์— PiPe๋ฅผ ์‚ฝ์ž…, PiPe๋Š” ๋ฉ”์†Œ๋“œ๋กœ ํ–ฅํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ด์— ๋Œ€ํ•ด ์ž‘๋™ํ•œ๋‹ค.


2. PIPE ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•(Binding Pipes)

Handler-level Pipes

  • ํ•ธ๋“ค๋Ÿฌ ๋ ˆ๋ฒจ์—์„œ @UsePipes() ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ.
  • ์ด ํŒŒ์ดํ”„๋Š” ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ ์šฉ. (title, description)


Parameter-level Pipes

  • ํŠน์ •ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์—๊ฒŒ๋งŒ ์ ์šฉ์ด ๋˜๋Š” ํŒŒ์ดํ”„.
  • ์ด ํŒŒ์ดํ”„๋Š” ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ ์šฉ. (title, description)


Global Pipes

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์˜ ํŒŒ์ดํ”„.
  • ํด๋ผ์ด์–ธํŠธ์—์„œ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์— ์ ์šฉ.
  • ๊ฐ€์žฅ ์ƒ๋‹จ ์˜์—ญ์ธ main.ts์— ์ถ”๊ฐ€


3. Built-in Pipes

Nest JS ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ๋†“์€ 6๊ฐ€์ง€์˜ Built-in Pipes

  • ValidationPipe
  • ParseIntPipe
  • ParseBoolPipe
  • ParseArrayPipe
  • ParseUUIDPipe - DefaultValuePipe

4. pipes ์‚ฌ์šฉํ•˜๊ธฐ

๋ชจ๋“ˆ ์„ค์น˜

npm install class-validator class-transformer --save

profile
๐Ÿš€ ๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ์“ฐ๋Š” ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€