Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- postgresql
- UI
- ps
- Three
- html
- PyTorch
- ts
- nodejs
- review
- Express
- python
- vscode
- ML
- sqlite
- CSS
- API
- js
- Git
- frontend
- react
- DB
- Linux
- PRISMA
- GAN
- CV
- figma
- backend
- C++
- SOLID
- mongo
Archives
- Today
- Total
아카이브
[Node][Express] Express로 미들웨어 다루기 본문
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 |
Comments