node.js

DND 5๊ธฐ 6์ฃผ์ฐจ - api์ œ์ž‘ ๋ฐ ํšŒ๊ณ 

dev_summer 2021. 8. 8. 16:15

 

๊ธฐํš๋ถ€ํ„ฐ ๋กœ๊ณ ์„ ์ • ๋“ฑ์„ ํ•จ๊ป˜ ์ž‘์—…ํ•˜๊ณ ์žˆ์–ด์„œ

์•„์ง ํ”„๋ก ํŠธ๊ฐ€ ๋‚˜์˜ค์ง„ ์•Š์•˜์ง€๋งŒ ๋ฐฑ์—”๋“œ api ๋ช…์„ธ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  api๋ฅผ ์ž‘์—… ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๋ฉฐ ์ž‘์—…ํ•˜๋ฉด์„œ ์–ด๋ ค์› ๋˜ ์ ์„ ๋˜๋Œ์•„๋ณด์•„์•ผ๊ฒ ๋‹ค.

 

 - guards 

๋‚˜๋„ ๊ทธ๋ ‡๊ณ  ๋‹ค๋ฅธ ๋ฐฑ์—”๋“œ๋ถ„๋„ ๊ทธ๋ ‡๊ณ  nest๋ฅผ ์ ‘ํ•œ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— express์—์„œ middleware๋กœ ์œ ์ €์˜ authentication์„ ๊ฒ€์‚ฌํ•˜์˜€๋Š”๋ฐ 

nest์—์„œ๋Š” ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์กด์žฌํ•˜์—ฌ guards๋กœ ์ธ์ฆ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ์™ธ์— interceptor, pipe๋“ฑ์„ ๊ฑฐ์ณ ์‹ค์ œ ์„œ๋น„์Šค๋‹จ์œผ๋กœ ๋„˜์–ด์˜ฌ์ˆ˜์žˆ๋‹ค.

์Šคํ”„๋ง๋ถ€ํŠธ์™€ ์ƒ๋‹นํžˆ ํก์‚ฌํ•˜๋‹ค๊ณ  ํ•˜์ง€๋งŒ ๋‚˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ธฐ๋•Œ๋ฌธ์— ๊ตฌ๋ฆ„์ฒ˜๋Ÿผ ๋‘ฅ๋‘ฅ ๋– ์žˆ๋Š” ๊ฐœ๋…์„ ์žก๊ธฐ๊ฐ€ ํž˜๋“ค์—ˆ๋‹ค.

์ด๋Ÿด๋• ๋ณดํ†ต์˜ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๊ฐœ๋…์„ ์žก๋Š”๊ฒŒ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค.

guards์—์„œ๋Š” ์œ ์ € ์ธ์ฆ ๊ฒ€์‚ฌ, interceptor์—์„œ๋Š” s3๋“ฑ์˜ ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ›๋Š” ํ–‰์œ„, pipe ์—์„œ๋Š” dto์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋“ฑ์˜ ์˜ˆ์ œ๊ฐ€ ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

api๋กœ ๋™์ž‘์€ ์ œ์ž‘ํ•˜์˜€์œผ๋‚˜ ์ธ์ฆ์„ ๊ฒ€์‚ฌํ•˜๋Š” guards๋ฅผ ์ œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ๊ฒŒ ๋˜์ง€ ์•Š์•˜๋‹ค.

๊ฐ€๋“œ๋Š” ์ง์ ‘ ๊ตฌํ˜„๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ passport-jwt ์ „๋žต์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„์žˆ๋‹ค.

jwt token์„ ๋ฐœ๊ธ‰ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ๋งˆ๋‹ค ์ด ํ† ํฐ์„ ๊ฒ€์‚ฌ๋ฅผ ํ•ด์ค€๋‹ค.

passport-jwt๋กœ ๋กœ๊ทธ์ธ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณธ ์ ์€ ์—†์–ด์„œ ์ผ๋‹จ passport ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๊ฐ•์˜๋ฅผ ์‚ดํŽด๋ณด์•˜๋‹ค.

์ƒํ™œ์ฝ”๋”ฉ, ์ œ๋กœ์ดˆ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉด ํ† ํฐ์—์„œ ์œ ์ €์˜ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๋กœ๊ทธ์ธ์ด ๋˜๋ฉด ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•ด ์ฃผ๋Š” ๋“ฑ์˜ ๋ชจ๋“ˆ์„ ์ดํ•ดํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ–ˆ๋‹ค.

์˜ˆ์ œ๊ฐ€ express๋กœ ๋˜์–ด์žˆ์–ด์„œ ์ด๋ฅผ nest์— ๋„์ž…ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ช‡๊ฐ€์ง€์˜ ์ปค์Šคํ…€์ด ํ•„์š”ํ–ˆ๋‹ค.

์ด ์ปค์Šคํ…€์€ ์ œ๋กœ์ดˆ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉฐ ๋„์›€์„ ๋ฐ›์•˜๋‹ค.

nest๋Š” module๋กœ ๋™์ž‘ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋™์ž‘์„ ๋ชจ๋“ˆ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์—ˆ๋‹ค.

์‚ฌ์‹ค ์ด ๋ถ€๋ถ„์€ ์•„์ง๋„ ํ—ท๊ฐˆ๋ฆฌ์ง€๋งŒ ๋‚˜๋Š” ์š”์ฆ˜ ๋„ค์ŠคํŠธ๊ฐ€ ์ข‹์•„์กŒ๊ธฐ๋•Œ๋ฌธ์— ์ฐจ์ฐจ ๋„ค์ŠคํŠธ์˜ ์ „์ฒด๋ฅผ ์ดํ•ดํ•ด๋ณด๊ฒ ๋‹ค.

 

 

๊ธฐ๋Šฅ์ •๋ฆฌ