Express.js의 미들웨어는 다소 기술적으로 들릴 수도 있지만, 일단 익숙해지면 매우 간단합니다. 이는 경주의 피트 스톱과 같습니다. 요청이 들어오고 결승선(경로 핸들러)에 도달하기 전에 수정, 확인 또는 기록을 위해 여러 지점에서 몇 군데 정차합니다.
이 글에서는 미들웨어가 무엇인지, 어떻게 사용하는지 분석하고 실제 사례를 보여드리겠습니다. 최대한 간단하고 실용적으로 만들어 보겠습니다!
서버에 대한 모든 요청이 여행 중인 자동차라고 상상해 보세요. 미들웨어는 각 자동차가 목적지에 도달하기 전에 통과해야 하는 일련의 검문소와 같습니다. 각 체크포인트(미들웨어)에서 어떤 일이 발생합니다. 차가 세차를 하거나, 간식을 집거나, 돌아서 집에 가라는 지시를 받을 수도 있습니다!
코딩 측면에서 미들웨어는 요청과 응답 사이에 있는 기능일 뿐입니다. 다음을 수행할 수 있습니다.
다음은 매우 기본적인 예입니다.
app.use((req, res, next) => { console.log('A request came in!'); next(); // Pass the baton to the next middleware });
요청이 서버에 도달할 때마다 메시지를 기록한 후 제어권을 다음 미들웨어나 경로 핸들러로 전달합니다.
Express에는 생활을 더욱 편리하게 해주는 몇 가지 미들웨어 기능이 내장되어 있습니다. 다음은 아마도 항상 사용하게 될 몇 가지 사항입니다.
1- express.json(): 이는 수신되는 JSON 데이터를 처리하는 데 도움이 됩니다.
app.use(express.json());
2- express.static(): 이미지나 CSS와 같은 정적 파일을 제공하고 싶으십니까? 이 미들웨어로 모든 것을 해결할 수 있습니다.
app.use(express.static('public'));
3- express.urlencoded(): HTML 양식을 통해 전송된 데이터를 구문 분석하는 데 도움이 됩니다.
app.use(express.urlencoded({ extended: true }));
로그인이나 사용자 로그인 여부 확인과 같은 특정 작업을 처리하기 위해 자체 미들웨어를 만들 수도 있습니다.
예: 단순 로거
app.use((req, res, next) => { console.log(`Request Method: ${req.method}, URL: ${req.url}`); next(); });
요청이 서버에 도달할 때마다 HTTP 메서드와 URL을 기록합니다. 앱에서 일어나는 일을 추적하는 데 유용합니다.
예: 인증 확인
const checkAuth = (req, res, next) => { if (!req.headers.authorization) { return res.status(403).send('You shall not pass! (Unauthorized)'); } next(); // Allow the request to continue if authorized }; app.use(checkAuth);
여기서 요청에 승인 헤더가 없으면 '403 Forbidden' 메시지와 함께 차단됩니다. 그렇지 않으면 전달됩니다.
모든 것을 직접 쓰고 싶지 않으신가요? 좋은 소식: Express는 작업을 처리할 수 있는 수많은 타사 미들웨어와 함께 작동합니다.
예: 로깅을 위한 Morgan
morgan은 요청 로깅에 널리 사용되는 미들웨어입니다. 사용 방법:
1- 설치:
npm install morgan
2- 앱에 추가:
const morgan = require('morgan'); app.use(morgan('dev'));
이제 요청이 들어올 때마다 터미널에 멋진 형식의 로그가 표시됩니다.
예: 교차 출처 요청에 대한 cors
cors 미들웨어를 사용하면 앱이 다른 도메인의 요청을 처리할 수 있습니다(API 구축 시 매우 유용함).
1- 설치:
npm install cors
2- 사용:
const cors = require('cors'); app.use(cors());
그렇습니다! 이제 앱에서 힘들이지 않고도 교차 출처 요청을 처리할 수 있습니다.
항상 앱의 모든 경로에 미들웨어를 적용할 필요는 없습니다. 때로는 특정 항목에서만 실행되기를 원할 수도 있습니다.
app.get('/dashboard', checkAuth, (req, res) => { res.send('Welcome to the Dashboard'); });
여기서 checkAuth 미들웨어는 누군가가 /dashboard 경로에 액세스하려고 할 때만 실행됩니다. 승인이 없으면 들어갈 수 없습니다!
때때로 상황이 잘못될 때도 있습니다. 이것이 오류 처리 미들웨어가 유용한 곳입니다. 약간 다르게 보입니다. err, req, res 및 next의 네 가지 인수가 필요합니다.
app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Something went wrong!'); });
이 미들웨어는 오류를 포착하고 친숙한 "500 내부 서버 오류" 메시지를 다시 보냅니다.
미들웨어는 Express.js의 스위스 군용 칼과 같습니다. 요청을 관리하고, 오류를 처리하고, 로깅이나 인증과 같은 멋진 기능을 추가하는 데 도움이 됩니다. 내장된 옵션을 사용하든, 직접 작성하든, 타사 도구를 가져오든 미들웨어는 앱을 모듈화하고 관리하기 쉽게 유지합니다.
읽어주셔서 감사합니다. 즐거운 코딩 되세요! ?
위 내용은 Node.js를 사용한 Express.js의 미들웨어 이해 - 9부의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!