Session 25. Middleware

๊น€๋ฏผ์žฌยท2021๋…„ 10์›” 9์ผ
0

TIL, WeCode, Courseย 

๋ชฉ๋ก ๋ณด๊ธฐ
44/48
post-thumbnail

*๐Ÿ”Study Keyword :

Middleware๐Ÿ”‘ ๋‚˜๋„ ํ•œ ๋ฒˆ ์จ๋ณด์ž~

- Middleware

-WHY USEโ”โ•

Middleware๋ฅผ ์™œ ์“ธ๊นŒ?

  • API๋Š” ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ๋ถ€ํ„ฐ ์‘๋‹ต์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ๊นŒ์ง€ ์ „ ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    ๊ทธ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ๊ฑฐ์น˜๋Š”๋ฐ ๊ทธ ํ•จ์ˆ˜ ํ•˜๋‚˜, ํ•˜๋‚˜๊ฐ€middleware์ด๋‹ค.

-WHNE USEโ”โ•

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

  • ์œ„ ์ด๋ฏธ์ง€๋Š” ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ํ† ํฐ์„ ์—ด์–ด์„œ(๋ณตํ˜ธํ™”) ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ณผ์ •์ด ๋‹ด๊ธด ์ฝ”๋“œ์ด๋‹ค.
  • ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž์˜ ์‹ ์›์„ ํŒŒ์•…ํ•˜๋Š” ๊ณผ์ •์—์„œ๋„ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ
    ๊ฐ€๋ น 1> ๋งŒ์•ฝ ์—†๋Š” ์‚ฌ์šฉ์ž์ผ ๊ฒฝ์šฐ 2>์œ ๋ฃŒ ํšŒ์›์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋“ฑ๋“ฑ์ด ์žˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ์ผ์ผ์ด ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๋œ๊ธฐ ์œ„ํ•ด ๋ฏธ๋“ค์›จ์–ด๋ผ๋Š” ๊ณตํ†ตํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌ๋ฅผ ํ•˜์—ฌ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
<script>
import express from 'express';
const { ArticleController } from '../controllers';
const { validateToken } from '../middlewares'; 
// ์œ„์—์„œ ๋งŒ๋“  ๋ฏธ๋“ค์›จ์–ด ๋กœ์ง์„ ์ž„ํฌํŠธ ํ•ฉ๋‹ˆ๋‹ค.
const router = express.Router();
router.get('/', ArticleController.getArticles)
router.get('/:articleId', ArticleController.getOneArticle)
// ์•„๋ž˜ ์„ธ๊ฐ€์ง€ post, put, delete ์š”์ฒญ์— ๋Œ€ํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์œ ์ €์˜ ์ธ์ฆ/์ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•œ ๋กœ์ง์ž…๋‹ˆ๋‹ค.
router.post('/', validateToken, ArticleController.postOneArticle)
router.put('/:articleId', validateToken, ArticleController.updateOneArticle)
router.delete('/:articleId', validateToken, ArticleController.deleteOneArticle)
export default router
</script>

utilํ•จ์ˆ˜์™€ ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๊ธฐ์ค€์€?

  • ํŠน์ •ํ•œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์ด์ „์— ์‚ฌ์ „์— ๋จผ์ € ์ž‘๋™ํ•ด์•ผํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ๋ฐ”๋กœ ๋ฏธ๋“ค์›จ์–ด๋กœ, ์ฆ‰ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ค์ „์— ๋“ค์–ด๊ฐ€๋Š” ํ•จ์ˆ˜์˜ ์—ญํ• ์„ ํ•˜๋ฉด ๋ฏธ๋“ค์›จ์–ด์ด๋‹ค.
  • ๋ฐ˜๋ฉด utilํ•จ์ˆ˜๋Š” ๊ณตํ†ตํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • next()๋Š” ๋‹ค์Œ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ
    => ๋”ฐ๋ผ์„œ ๋‹จ์ˆœ ๋ฐ˜๋ณต์ž‘์—…์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ ๋ฏธ๋“ค์›จ์–ด๋กœ ์•ˆ๋นผ๋ฉด ์„œ๋น„์Šค ๋‹จ์— if else๋ฌธ์„ ์“ฐ๊ฒŒ ๋˜๋Š”๋ฐ user order product์„œ๋น„์Šค์—์„œ ๋ชจ๋‘ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฏธ๋“ค์›จ์–ด๋กœ ๊ฑธ๋Ÿฌ๋‚ด์–ด ๋”ฐ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’กTIP)

utill ํ•จ์ˆ˜ ์“ฐ์ด๋Š” ๊ฒฝ์šฐ ํ•œ ๋ฒˆ ์ฐพ์•„๋ณด๊ธฐ

*๐Ÿ’กconclusion

๋ฏธ๋“ค์›จ์–ด๋Š” ์ง์ ‘ ์ž‘์„ฑํ•ด๋ณด๊ณ  ์จ๋ด์•ผ์•ˆ๋‹ค.

#๐Ÿ“‘Study Source

๊นŒ๋งˆ๋“ํ•œ ์ง€๋‚œ ์ฃผ ์„ธ์…˜์—์„œ :(

profile
์ž๊ธฐ ์‹ ๋ขฐ์˜ ํž˜์„ ๋ฏฟ๊ณ  ์‹ค์ฒœํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ ์žํ•ฉ๋‹ˆ๋‹ค.

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