Server

middlewareλž€?

thals0 2022. 9. 2. 18:00
728x90

πŸ“Œ middlewareλž€?

  • (μ‚¬μ „μ μ˜λ―Έ) μ„œλ‘œ λ‹€λ₯Έ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜(ν”„λ‘œκ·Έλž¨)이 μ„œλ‘œ 톡신을 ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄
  • 즉, μ–‘μͺ½ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ κ°€μš΄λ°μ—μ„œ 역할을 ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄
  • Express: λ²‘μ—”λ“œ μ„œλΉ„μŠ€ ꡬ성을 μœ„ν•œ λ‹€μ–‘ν•œ 상황에 λ§žλŠ” μ—¬λŸ¬κ°€μ§€ μ„œλΉ„μŠ€λ₯Ό 미듀웨어 ν˜•νƒœλ‘œ 제곡
  • Express μ—μ„œμ˜ λ―Έλ“€μ›¨μ–΄λŠ” μ„œλ²„μ— λ“€μ–΄μ˜¨ μš”μ²­μ΄ λ“€μ–΄μ™€μ„œ μ‘λ‹΅μœΌλ‘œ λ‚˜κ°ˆ λ•Œ κΉŒμ§€ κ±°μΉ˜λŠ” λͺ¨λ“  ν•¨μˆ˜ λ˜λŠ” κΈ°λŠ₯을 의미
    • μš”μ²­ -> 미듀웨어 -> 응닡

 

βœ… middleware μ‚¬μš©ν•˜κΈ° 

  • Express μ—μ„œλŠ” app.use λ˜λŠ” app.method ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ 미듀웨어 μ‚¬μš©
  • 기쑴에 ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜μ—¬ μ‚¬μš©ν–ˆλ˜ 것 처럼, μœ„μ˜ λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•΄μ„œ req, res 에 λŒ€ν•œ 처리
app.use(‘μš”μ²­ μ£Όμ†Œ‘, (req, res, next) => {});

 

 

πŸ“ next

: callback ν•¨μˆ˜λ‘œμ„œ ν•΄λ‹Ή ν•¨μˆ˜κ°€ 호좜 되면 ν˜„μž¬ 미듀웨어λ₯Ό μ’…λ£Œν•˜κ³  λ‹€μŒ 미듀웨어λ₯Ό μ‹€ν–‰

  • next λ₯Ό μƒμš©ν•΄μ„œ λ‹€μŒ λ―Έλ“€ 웨어λ₯Ό μ‹€ν–‰ μ‹œν‚¬ λ•Œ, 이전 λ―Έλ“€ μ›¨μ–΄μ—μ„œ μ²˜λ¦¬ν•œ 값을 전달 ν•˜κ³  싢을 λ•Œκ°€ λ°œμƒ
  • global μ˜μ—­μ—μ„œ λ³€μˆ˜λ₯Ό ν•˜λ‚˜ λ§Œλ“€μ–΄μ„œ 전달해도 λ˜μ§€λ§Œ global λ³€μˆ˜λŠ” 보톡 μ‚¬μš©μ„ 잘 μ•ˆν•˜λŠ” 것이 μ’‹μŒ
    • λ³€μˆ˜κ°€ μ–Έμ œ μ–΄λ””μ—μ„œ 변경이 λ˜μ–΄ 문제λ₯Ό λ°œμƒ μ‹œν‚¬μ§€ 예츑이 μ–΄λ ΅κΈ° λ•Œλ¬Έ
  • 이럴 λ•Œμ—λŠ” req 객체에 ν•„λ“œλ₯Ό μΆ”κ°€ν•΄μ„œ μ „λ‹¬ν•˜λŠ” 방법이 많이 μ‚¬μš©λ¨ (μ•„λž˜ μ½”λ“œ μ°Έκ³ )
const express = require('express');
const app = express();
const PORT = 4000;
app.use('/', (req, res, next) => {
  console.log('Middleware 1');
  req.reqTime = new Date();
  next();
});
app.use((req, res, next) => {
  console.log('Middleware 2');
  res.send(`Requsted at ${req.reqTime}`);
});
app.listen(PORT, () => {
  console.log(`The express server is running at port: ${PORT}`);
});

 

πŸ“ Promise

fsλ₯Ό μ΄μš©ν•˜μ—¬ promise 상황 λ§Œλ“€κΈ° 

μ‚¬μš©μ΄ 직관적인 Async / Await 을 μ΄μš©ν•΄μ„œ κ΅¬ν˜„

const express = require('express');
const fs = require('fs');
const app = express();
const PORT = 4000;
app.use('/', async (req, res, next) => {
  console.log('Middleware 1');
  req.reqTime = new Date();
  req.fileContent = await fs.promises.readFile('package.json', 'utf-8');
  next();
});
app.use((req, res, next) => {
  console.log('Middleware 2');
  console.log(req.fileContent);
  res.send(`Requsted at ${req.reqTime}`);
});
app.listen(PORT, () => {
  console.log(`The express server is running at port: ${PORT}`);
});
728x90