Nodejs Middleware
Node.js Middleware ์์๋ณด๊ธฐ
๐Middleware๋?
๋ฏธ๋ค์จ์ด๋ ์์ฒญ(req), ์๋ต(res)์ ์ฌ์ด์์ ๋ชฉ์ ์ ๋ง๊ฒ ๊ตฌํํ ํจ์๋ฅผ ์คํํ๊ฒ ๋๋ ๊ฑฐ์ณ๊ฐ๋ ํจ์๋ผ๋ ์๋ฏธ์ด๋ค.
docs์์๋ ๋ฏธ๋ค์จ์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๊ณ ์๋ค.
Middleware functions are functions that have access to the request object (req), the response object (res), and the next function in the applicationโs request-response cycle.
์ฝ๊ฒ ์ดํดํ๊ธฐ ์ํด ์๋ฅผ ๋ค๋ฉด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด console์ ์ฐ๋ ํจ์๋ฅผ ๋ฏธ๋ค์จ์ด๋ก ๊ตฌํํ๋ค๊ณ ์๊ฐ์ ํด๋ณด์
์์ฒญ์ด ๋ค์ด์ค๊ณ ์๋ฒ๋ ์ฝ์์ ์ฐ์ ํ ์์ฒญ์๋ํ ์๋ต์ ๋ค์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ค ๊ฒ์ด๋ค. ์ด๊ฒ์ด ์ค๊ฐ์์ ์คํ๋๋ ํจ์ ์ฆ ๋ฏธ๋ค์จ์ด์ ๊ฐ๋
์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.
๐Middleware ์ฌ์ฉ๋ฒ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฏธ๋ค์จ์ด๋ app.use์ ํจ๊ป ์ฌ์ฉํ๋ค๊ณ docs์์๋ ์๋ ค์ฃผ๊ณ ์๋ค. ๋ชจ๋ ์์ฒญ์์ ์ฝ์์ ์ฐ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ์์ฑํ์ฌ ์์ฒญ๊ณผ ์๋ต์ ์ค๊ฐ์์ ์คํ์์ผ๋ณด์.
1 |
const express = require('express') |
console์ ๊ธฐ๋กํ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ์์ฑํด์ฃผ์๋ค. app.use๋ ๋ชจ๋ ์์ฒญ์์ ์คํํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค. ์ด์ 3000ํฌํธ๋ก ์ ์์ ๋ก๊ทธ๊ฐ ๋จ๋์ง ํ์ธ์ ํด๋ณด์.

์๋ฒ์ ์ ์ ํ ํฐ๋ฏธ๋์ ํ์ธํด๋ณด์๋ค.

์์ฑํ ๋ก๊ทธ๊ฐ ์ ์ฐํ๊ฒ์ ํ์ธํ ์ ์๋ค.๐
๐next๋ฉ์๋
๋ฏธ๋ค์จ์ด์์๋ ํจ์๋ฅผ ์ดํ ํ ๋ค์ ๋ฏธ๋ค์จ์ด๋ฅผ ์คํํ๊ธฐ ์ํด์ next๋ฉ์๋๋ฅผ ํ์์ ์ผ๋ก ํธ์ถํด์ผ ํ๋ค. ์ด์ ๋ next๋ฅผ ํธ์ถํ์ง ์๋๋ค๋ฉด ๋ค์ ๋ฏธ๋ค์จ์ด๋ก ๋์ด๊ฐ์ง ์๊ธฐ ๋๋ฌธ์ธ๋ฐ ์๊น ๋ง๋ค์๋ ๋ฏธ๋ค์จ์ด์ next๋ฅผ ํธ์ถํ์ง ์๊ณ ๋ค์ ์คํ์ ํด๋ณด๋๋ก ํ๊ฒ ๋ค.
1 |
const express = require('express') |

3000ํฌํธ๋ก ์ ์์ ํ๋ฉด โHello Worldโ๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ํ๋ฉด์ ๋ณด์ฌ์ ธ์ผ ํ์ง๋ง ํ๋ฉด์ด ๋์ด๊ฐ์ง ์๋๋ค.

ํ์ง๋ง ์ฝ์์ ๋จ๊ธฐ๋ ๋ฏธ๋ค์จ์ด๋ ๊ทธ๋๋ก ์คํ์ด ๋๊ฒ์ ๋ณผ ์ ์๋ค. ์ด์ฒ๋ผ ๋ฏธ๋ค์จ์ด๋ ๋ค์๋ฏธ๋ค์จ์ด๋ก ๋์ด๊ฐ๊ธฐ ์ํด์ next ๋ฉ์๋๋ฅผ ํ์์ ์ผ๋ก ํธ์ถ์ ํด์ค์ผํ๋ค.
๐ํจ์๋ก ๊ตฌํํ๊ธฐ
app.use๋ฅผ ํ์ฉํ์ฌ ๋ชจ๋ ๋ผ์ฐํฐ์์ ๋ฏธ๋ค์จ์ด๋ฅผ ์คํํ ์ ์์ง๋ง ํน์ ๋ผ์ฐํฐ์์๋ง ์คํ ํ๊ณ ์ ํ๋ ๋ฏธ๋ค์จ์ด๊ฐ ์์ ์ ์๋ค. ์ด๋ด๋๋ ํจ์๋ก ๋ง๋ค์ด์ ์ค๊ฐ์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
์์๋ฅผ ์ํด ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ํน์ ๋ผ์ฐํฐ์์๋ง ์คํํด๋ณด๋๋ก ํ๊ฒ ๋ค.
1 |
const express = require('express') |
middleware๋ผ๋ ํจ์๋ฅผ ๋ง๋ค๊ณ โ/mypageโ๋ผ๋ ๋ผ์ฐํฐ์ ์ค๊ฐ์ ๋ฃ์ด์ฃผ์๋ค. ์ด์ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ํจ์๋ โ/mypageโ ์์ฒญ์ ์ค๊ฐ์์ ์คํ ๋ ๊ฒ์ด๋ค.


์๋ฌด๋ฐ ๋ก๊ทธ๊ฐ ๊ธฐ๋ก๋์ง ์๋๋ค. โ/mypageโ๋ก ์์ฒญ์ ๋ณด๋ด๋ณด์.

๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๋ ๋ฏธ๋ค์จ์ด๊ฐ ์ ์์ ์ผ๋ก ์๋์ ํ๋ค. ์ด๋ฐ์์ผ๋ก ํน์ ๋ผ์ฐํฐ์์๋ง ์คํํ๊ณ ์ ํ๋ ๋ฏธ๋ค์จ์ด๋ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
๐Middleware๊ฐ ์คํ๋๋ ๊ฒฝ์ฐ
| ๋ฏธ๋ค์จ์ด๊ฐ ์คํ๋๋ ๊ฒฝ์ฐ | |
|---|---|
| app.use(๋ฏธ๋ค์จ์ด) | ๋ชจ๋ ์์ฒญ์์ ๋ฏธ๋ค์จ์ด ์คํ |
| app.use(โ/abcโ, ๋ฏธ๋ค์จ์ด) | abc๋ก ์์ํ๋ ์์ฒญ์์ ๋ฏธ๋ค์จ์ด ์คํ |
| app.post(โ/abcโ, ๋ฏธ๋ค์จ์ด) | abc๋ก ์์ํ๋ POST ์์ฒญ์์ ๋ฏธ๋ค์จ์ด ์คํ |
| app.get(โ/defโ, ๋ฏธ๋ค์จ์ด) | def๋ก ์์ํ๋ GET ์์ฒญ์์ ๋ฏธ๋ค์จ์ด ์คํ |
Nodejs Middleware
http://hanjuren.github.io/2021/09/09/nodejs/Nodejs-Middleware/