Middleware in Express.js: 중간 요청 처리

Middleware 안으로 소개 Express.js

Middleware in은 Express.js 요청-응답 수명 주기 동안 특정 순서로 함수를 실행할 수 있게 해주는 강력한 개념입니다. 이러한 기능은 인증, 로깅, 데이터 유효성 검사 등과 같은 다양한 작업을 수행할 수 있습니다. Middleware 함수는 순차적으로 실행되며 각 함수는 스택의 다음 항목으로 제어를 전달하는 함수 뿐만 아니라 및 객체 middleware 에 액세스할 수 있습니다. request response next middleware

왜 사용합니까 Middleware ?

Middleware 애플리케이션의 기능을 모듈화하고 유지 관리성을 향상시키는 데 필수적입니다. 이를 통해 경로 핸들러를 깨끗하게 유지하고 특정 작업에 집중할 수 있으며 공통 또는 교차 편집 문제를 middleware 기능으로 오프로드할 수 있습니다. 이러한 관심사 분리는 코드 재사용성을 촉진하고 코드베이스를 보다 체계적으로 만듭니다.

생성 및 사용 Middleware

middleware 에서 생성하려면, 및 의 Express.js 세 가지 매개변수를 사용하는 함수를 정의 request 합니다. response next

middleware 다음은 들어오는 각 요청을 기록 하는 기본적인 예입니다 .

const logMiddleware =(req, res, next) => {  
  console.log(`Received a ${req.method} request at ${req.url}`);  
  next(); // Pass control to the next middleware  
};  
  
app.use(logMiddleware);  

app.use() 모든 경로에 전역적 으로 적용하는 방법을 사용하거나 middleware 특정 경로에 선택적으로 사용할 수 있습니다.

Middleware 실행 순서

Middleware 함수는 를 사용하여 정의된 순서대로 실행됩니다 app.use().

예를 들어:

app.use(middleware1);  
app.use(middleware2);  

이 경우 들어오는 모든 요청에 ​​대해 middleware1 이전에 실행됩니다 middleware2.

오류 처리 Middleware

함수 내에서 오류가 발생하면 middleware 오류를 함수에 전달할 수 next 있으며 Express.js 자동으로 오류 처리로 건너뜁니다 middleware.

예를 들면 다음과 같습니다.

const errorMiddleware =(err, req, res, next) => {  
  console.error(err);  
  res.status(500).send('Something went wrong!');  
};  
  
app.use(errorMiddleware);  

Middleware 인증에 사용

Middleware 일반적으로 웹 응용 프로그램에서 인증 및 권한 부여를 구현하는 데 사용됩니다. 예를 들어 middleware 특정 경로에 대한 액세스를 허용하기 전에 사용자가 인증되었는지 확인하는 함수를 만들 수 있습니다.

const authenticateMiddleware =(req, res, next) => {  
  if(req.isAuthenticated()) {  
    return next(); // User is authenticated, proceed to the next middleware  
  }  
  res.redirect('/login'); // User is not authenticated, redirect to login page  
};  
  
app.get('/profile', authenticateMiddleware,(req, res) => {  
  res.send('Welcome to your profile!');  
});  

 

결론

Middleware in은 Express.js 웹 애플리케이션의 기능을 관리하고 향상시키는 데 필수적인 도구입니다. 재사용 가능한 함수를 생성함으로써 middleware 코드를 간소화하고 문제를 모듈화하며 프로젝트의 전반적인 유지 관리성을 향상시킬 수 있습니다. 인증 처리에서 로깅 및 오류 관리에 이르기까지 middleware 강력하고 안전한 웹 애플리케이션을 효율적으로 구축할 수 있습니다.