[Node][Express] Express로 미들웨어 다루기

2024. 8. 12. 23:02·Backend/Node.js

 Express 객체를 이용해 미들웨어로 작용할 함수를 호출하는 방법에 대해 설명합니다.

 

 Express 객체를 생성하면, API 요청이 발생할 때 요청의 종류(GET, POST 등)에 따라 사용자가 원하는 함수를 실행하게 할 수 있습니다.

import express from 'express';

const app = express();

이렇게 생성한 객체 app은 http 메소드들을 함수로 사용할 수 있으며, 엔드포인트와 콜백함수를 인자로 받습니다.

// get()             : GET 메소드를 사용합니다.
// '/endpoint'       : 요청이 도달할 서버의 엔드포인트입니다.
// callback_function : 해당 엔드포인트에 이 요청이 전송되면, 이 함수를 호출합니다.
app.get('/endpoint', callback_function);

 

 

콜백함수는 특별한 역할을 하는 매개변수들이 정해져 있으며, 보통 2~4가지의 매개변수를 주로 사용합니다.

(req, res)

 가장 일반적인 형태인 요청(req)과 응답(res)입니다.

function callback(req, res) {
    console.log(req);
    res.status(200).json({ "message": "response" });
}

app.get('/endpoint', callback);

(req, res, next)

 여기서 다음 콜백(next)을 추가할 수 있습니다. 이는 콜백 함수 내에서 호출함으로서 현재 미들웨어(콜백함수)에서 다른 미들웨어로 넘어갈 수 있게 해 줍니다. 이 때 next( )로 실행될 다음 미들웨어는 메소드 함수(get)을 호출할 때 넘겨주는 인자의 순서대로 넘겨줍니다.

function callback1(req, res, next) {
    console.log(req);
    next();  // callback2()를 호출합니다.
}

function callback2(req, res, next) {
    console.log("callback end");
}

app.get('/endpoint', callback1, callback2);

(err, req, res, next)

 네 번째 매개변수는 에러(err)로, 세 번째와 달리 매개변수 맨 앞에 추가됩니다. 이는 일반적인 방법으로는 사용되지 않고, next()를 호출할 때 인자로 넘겨주거나, throw로 에러를 발생시킬 때만 사용할 수 있습니다.

function callback(req, res, next) {
    console.log(req);
    if (req) {
    	next(new Error('error'));  // 에러 넘기는 방법 1
    } else {
    	throw new Error('error');  // 에러 넘기는 방법 2
    }
}

function errorHandler(err, req, res, next) {
    console.log(err)
    res.json({ message: 'error handler' })
}

app.get('/endpoint', callback);
app.use(errorHandler);

 

728x90

'Backend > Node.js' 카테고리의 다른 글

[Node][Express] 내장 미들웨어 json() / urlencoded() / static()  (0) 2024.08.18
[Node][Express] all & use 메소드  (0) 2024.08.16
[Node][Express] Express에 대해서  (0) 2024.08.06
[Node] npm init & install  (0) 2024.05.19
[Node.js] NVM을 이용하여 Node 설치하기  (0) 2023.03.01
'Backend/Node.js' 카테고리의 다른 글
  • [Node][Express] 내장 미들웨어 json() / urlencoded() / static()
  • [Node][Express] all & use 메소드
  • [Node][Express] Express에 대해서
  • [Node] npm init & install
Rayi
Rayi
  • Rayi
    아카이브
    Rayi
  • 전체
    오늘
    어제
    • 분류 전체보기 (262)
      • CS (40)
        • ML (3)
        • CV (2)
        • PS (34)
      • Reveiw (17)
        • Paper (17)
        • Github (0)
      • Pytorch (5)
      • Language (58)
        • Python (7)
        • JavaScript (32)
        • TypeScript (16)
        • C++ (3)
      • IDE (12)
      • Git (13)
      • Frontend (71)
        • React (8)
        • SolidJS (20)
        • CSS (12)
      • UI (3)
      • Backend (15)
        • DB (17)
        • Node.js (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    postgresql
    html
    frontend
    C++
    API
    python
    deploy
    ps
    GAN
    CS
    UI
    nodejs
    PRISMA
    vscode
    mongo
    Three
    CV
    review
    backend
    Express
    CSS
    react
    ML
    figma
    ts
    SOLID
    js
    PyTorch
    Git
    DB
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Rayi
[Node][Express] Express로 미들웨어 다루기
상단으로

티스토리툴바