[BackEnd][Node.js][Nest.js] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - Custom Decorator

2022. 4. 12. 00:02ใ†Programming Project ์ž‘์—…์‹ค/๋‚ด์šฉ ์ •๋ฆฌ

728x90
๋ฐ˜์‘ํ˜•

 

 

Project Git Hub

 

 

๐Ÿ—‚ ๋ชฉ์ฐจ

โ— [BackEnd][Node.js][nest.js-PJ] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ์ดˆ๊ธฐ ๊ตฌ์„ฑ(Pipe, TypeORM, Configuration, Swagger, Logger)

โ— [BackEnd][Node.js][Nest.js] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ํšŒ์› ๊ฐ€์ž…

โ— [BackEnd][Node.js][Nest.js] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - JWT๋ฅผ ์ด์šฉํ•œ Login

โ— [BackEnd][Node.js][Nest.js] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - Passport, JWT๋ฅผ ์ด์šฉํ•œ ์ธ๊ฐ€ ์ฒ˜๋ฆฌ

โ— [BackEnd][Node.js][Nest.js] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - Custom Decorator

โ— [BackEnd][Node.js][nest.js-PJ] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ : ์ดˆ๊ธฐ ๊ตฌ์„ฑ(Entity, Controller,Module,Repository,Service)

 

 

 

 

๐Ÿ“š ๋ถ€๋ก

โ— [Node.js] Node.js ๊ธฐ์ดˆ
โ— [JavaScript] ๊ธฐ๋ณธ ๋ฌธ๋ฒ• 
โ— [BackEnd][Node.js] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ์ดˆ๊ธฐ ๊ตฌ์„ฑ
โ— [BackEnd][Node.js] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ์ดˆ๊ธฐ ๊ตฌ์„ฑ : DB ์—ฐ๊ฒฐ
โ— [BackEnd][Node.js] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ์ดˆ๊ธฐ ๊ตฌ์„ฑ : DB ์—ฐ๊ฒฐ(Sequelize)

โ— [Web] URL์˜ ์ดํ•ด
โ— 
[Spring] Spring์ด๋ž€?
โ—[Node.js][Nest.js] ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ Data ํ˜•์‹ ๋ณ€ํ™˜ํ•˜๊ธฐ - Pipe
โ—[Node.js][Nest.js] Configuration (์„ค์ •)
โ—
[Node.js][Nest.js]TypeORM
โ— [Node.js][Nest.js] Logger ๊ธฐ๋Šฅ
โ—
[JavaScript] Promise์™€ async ๊ทธ๋ฆฌ๊ณ  await 
โ— 
[Nest.js] API ์„ค๊ณ„ - ์š”์ฒญ, ์‘๋‹ต ๊ฐ์ฒด (Request, Response Object) 
โ— 
[์ •๋ณด๋ณด์•ˆ] JWT(JSON Web Token) ์ด๋ž€? 
โ— 
[Nest.js] Middle Ware(๋ฏธ๋“ค์›จ์–ด)






 

 

 

 

๐Ÿค” ๋‚ด๊ฐ€ ๋งŒ๋‚œ Error

โ— [Node.js][Error] Cannot find module '.dotenv'

 

 

 

 

 

 

 

 

 

๐Ÿš€ Custom Decorator

user.object.mng.decorator.ts

์ตœ์ดˆ ์ฃผ๋‹ˆํ•˜๋ž‘์€ ์œ„์™€ ๊ฐ™์ด Custom Decorator๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ `GetUser`๋ฅผ ๋งŒ๋“ค์–ด ์ค€ ๊ฒƒ์ด์—์š”.

`createParamDecorator`์•ˆ์—๋Š” `ctx`๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ `context(์˜์†์„ฑ)`์— ์ค„์ž„๋ง์ธ ๊ฒƒ์ด์—์š”.

23๋ฒˆ์งธ ์ค„์— `ctx`์•ˆ์— `switchToHtt()`์•ˆ์— `getRequest()`๋Š” Client `Request`์— ๋Œ€ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

์ด ์ •๋ณด๋ฅผ ์ƒ์ˆ˜ํ˜• ๋ณ€์ˆ˜ `request`์— ๋„ฃ์–ด์ฃผ๊ณ , ๊ทธ ์•ˆ์— ์žˆ๋Š” `user` ์ •๋ณด์— ๋Œ€ํ•œ ๊ฒƒ๋งŒ ๋”ฐ๋กœ ๋ฐ˜ํ™˜ ํ•ด ์ฃผ๋„๋ก ํ•ด ์ค€ ๊ฒƒ์ด์—์š”.

 

 

auth.controller.ts - test()

๋ฐ˜์‘ํ˜•

126๋ฒˆ์งธ ์ค„์— ๊ธฐ์กด์— ์žˆ์—ˆ๋˜ `@Req() req`๋ฅผ ์ง€์›Œ์ฃผ๊ณ , ์œ„์™€ ๊ฐ™์ด ์ˆ˜์ •์„ ํ•ด ์ค€ ๊ฒƒ์ด์—์š”.

`user.object.mng.decorator.ts`์—์„œ ์ฃผ๋‹ˆํ•˜๋ž‘์€ `createParamDecorator()`๋ฅผ ์ด์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น Decorator๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜ ์ž…๋ ฅ๋ž€์—๋‹ค๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด์—์š”.

 

 

    ๐Ÿ”ฝ  ๊ฒฐ๊ณผ

        ๐Ÿ“ฆ POSTMAN

Postman Test

Login์„ ํ†ตํ•ด Server๊ฐ€ ์ „๋‹ฌํ•ด ์ค€ JWT๋ฅผ ๋„ฃ์–ด `Request`๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ด ๋ณผ ๊ฒƒ์ด์—์š”.

Console.log

์œ„์™€ ๊ฐ™์ด ์ •์ƒ์ ์œผ๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

 

์ด์ „ ๊ธ€ : [BackEnd][Node.js][Nest.js] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - Passport, JWT๋ฅผ ์ด์šฉํ•œ ์ธ๊ฐ€ ์ฒ˜๋ฆฌ

๋‹ค์Œ ๊ธ€ : [BackEnd][Node.js][nest.js-PJ] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ : ์ดˆ๊ธฐ ๊ตฌ์„ฑ(Entity, Controller,Module,Repository,Service)

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•