>웹 프론트엔드 >JS 튜토리얼 >Express.js의 미들웨어 이해 및 구현

Express.js의 미들웨어 이해 및 구현

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-09-22 06:21:451107검색

Entendendo e Implementando Middlewares no Express.js

Express.jsNode.js를 사용하여 웹 애플리케이션을 구축하는 데 가장 널리 사용되는 프레임워크 중 하나입니다. RESTful API 생성을 용이하게 하고 모듈식 방식으로 애플리케이션을 구성할 수 있습니다. Express.js의 주요 개념 중 하나는 미들웨어를 사용하는 것입니다. 이 기사에서는 미들웨어가 무엇인지, 어떻게 작동하는지, 자신만의 미들웨어를 만드는 방법에 대해 설명합니다.

미들웨어란 무엇입니까?

미들웨어는 요청 개체(req), 응답 개체(res) 및 next() 함수에 액세스할 수 있는 함수입니다. 요청 및/또는 응답 개체를 수정하고 요청-응답 주기를 제어할 수 있습니다. 미들웨어는 다음과 같은 여러 가지 작업을 수행할 수 있습니다.

  • 아무 코드나 실행하세요.
  • 요청과 응답을 수정하세요.
  • 요청-응답 주기를 종료하세요.
  • 체인의 다음 미들웨어를 호출합니다.

Express.js 미들웨어의 기본 서명은 다음과 같습니다.

function middleware(req, res, next) {
    // Lógica do middleware
    next(); // Chama o próximo middleware
}

미들웨어 유형

Express에서는 여러 유형의 미들웨어를 찾을 수 있습니다.

  1. 애플리케이션 미들웨어: 전체 애플리케이션 또는 경로 집합에 영향을 미치는 미들웨어입니다.
  2. 경로 미들웨어: 하나 이상의 경로에만 적용됩니다.
  3. 통합 미들웨어: Express에서 직접 제공하는 express.json() 및 express.static() 등
  4. 타사 미들웨어: Express의 기능을 확장하기 위해 설치할 수 있는 morgan 또는 cors 등.

미들웨어는 어떻게 작동하나요?

요청이 수신되면 '미들웨어 체인'을 통과합니다. 각 미들웨어는 요청을 처리할 수 있으며 실행이 끝나면 다음 미들웨어를 호출할지(next() 함수 사용) 또는 응답을 마무리할지 결정할 수 있습니다.

const express = require('express');
const app = express();

// Middleware global
app.use((req, res, next) => {
    console.log('Request Type:', req.method);
    next();
});

// Middleware específico para a rota /user
app.use('/user', (req, res, next) => {
    console.log('Middleware para /user');
    next();
});

app.get('/user', (req, res) => {
    res.send('Página do Usuário');
});

app.listen(3000, () => {
    console.log('Servidor rodando na porta 3000');
});

맞춤형 미들웨어 생성

Express 또는 타사에서 제공하는 미들웨어 외에도 인증, 로깅, 데이터 조작 등의 특정 기능을 처리하는 자체 미들웨어를 만들 수 있습니다.

간단한 인증 미들웨어의 예:

function autenticar(req, res, next) {
    const token = req.header('Authorization');
    if (!token) {
        return res.status(401).send('Acesso negado. Token não fornecido.');
    }
    try {
        // Lógica para validar o token
        next(); // Continua para o próximo middleware
    } catch (err) {
        res.status(400).send('Token inválido.');
    }
}

app.use(autenticar); // Aplica o middleware para todas as rotas

타사 미들웨어

Express에서는 npm을 통해 설치할 수 있는 타사 미들웨어도 사용할 수 있습니다. 가장 인기 있는 것들은 다음과 같습니다:

  • morgan: HTTP 로그용.
  • 헬멧: 보안을 위해 보호 HTTP 헤더를 설정합니다.
  • cors: CORS(Cross-Origin Resource Sharing)를 활성화합니다.

Morgan 설치 및 사용:

npm install morgan
const morgan = require('morgan');

// Middleware de log
app.use(morgan('tiny'));

app.get('/', (req, res) => {
    res.send('Hello World');
});

미들웨어 순서

미들웨어는 등록된 순서대로 실행되므로 정의하는 순서가 중요합니다. 예를 들어 인증이 필요한 경로 뒤에 인증 미들웨어를 정의하면 해당 경로에 대해서는 실행되지 않습니다.

app.use(express.json()); // Middleware para parsear JSON

app.post('/secure-data', autenticar, (req, res) => {
    res.send('Acesso a dados seguros');
});

미들웨어 마무리

미들웨어가 next() 함수를 호출하지 않으면 요청-응답 주기가 중단됩니다. 이는 인증 확인과 같이 미들웨어 자체 내에서 요청을 마무리하려는 경우에 유용할 수 있습니다.

function autenticar(req, res, next) {
    if (!req.header('Authorization')) {
        return res.status(403).send('Não autorizado');
    }
    next();
}

결론

미들웨어는 Express.js를 사용하여 애플리케이션을 구축하는 데 필수적인 부분으로 뛰어난 유연성과 모듈성을 제공합니다. 미들웨어 사용법을 익히면 API를 효율적으로 구성하고, 코드를 재사용하고, 인증, 보안, 데이터 조작 등의 기능을 간단하고 확장 가능한 방식으로 추가할 수 있습니다.

아직 프로젝트에서 사용자 정의 미들웨어를 사용하고 있지 않다면 로깅 또는 인증 미들웨어와 같은 간단한 것부터 시작하여 Express.js가 제공하는 모듈성과 유연성을 경험해 보세요!


기사가 마음에 드셨나요? 동료 개발자들과 공유하는 것을 잊지 마세요!

위 내용은 Express.js의 미들웨어 이해 및 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.