Middleware๐
๋๋ ํ ๋ฒ ์จ๋ณด์~
-WHY USEโโ
- 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ํจ์๋ ๊ณตํตํจ์๋ฅผ ์๋ฏธํ๋ค.
- next()๋ ๋ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ํ ๋ฉ์๋
=> ๋ฐ๋ผ์ ๋จ์ ๋ฐ๋ณต์์ ์ด ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ์๋ ๋ฏธ๋ค์จ์ด๊ฐ ๋ค์ด๊ฐ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๊ฒ ๋๋ค. ๋ง์ฝ ๋ฏธ๋ค์จ์ด๋ก ์๋นผ๋ฉด ์๋น์ค ๋จ์ if else๋ฌธ์ ์ฐ๊ฒ ๋๋๋ฐ user order product์๋น์ค์์ ๋ชจ๋ ๋ฐ๋ณต๋๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ฏธ๋ค์จ์ด๋ก ๊ฑธ๋ฌ๋ด์ด ๋ฐ๋ก ์์ฑํ๋ฉด ๋๋ค.
๐กTIP)
utill ํจ์ ์ฐ์ด๋ ๊ฒฝ์ฐ ํ ๋ฒ ์ฐพ์๋ณด๊ธฐ
๋ฏธ๋ค์จ์ด๋ ์ง์ ์์ฑํด๋ณด๊ณ ์จ๋ด์ผ์๋ค.
๊น๋ง๋ํ ์ง๋ ์ฃผ ์ธ์ ์์ :(