Express.js のミドルウェアの理解と実装

Mary-Kate Olsen
リリース: 2024-09-22 06:21:45
オリジナル
1082 人が閲覧しました

Entendendo e Implementando Middlewares no Express.js

Express.js は、Node.js を使用して Web アプリケーションを構築するための最も人気のあるフレームワークの 1 つです。これにより、RESTful API の作成が容易になり、モジュール方式でアプリケーションを構造化できるようになります。 Express.js の主な概念の 1 つは、ミドルウェア の使用です。この記事では、ミドルウェアとは何か、それがどのように機能するか、そして独自のミドルウェアを作成する方法について理解します。

ミドルウェアとは何ですか?

ミドルウェアは、リクエスト オブジェクト (req)、レスポンス オブジェクト (res)、および next() 関数にアクセスできる関数です。要求オブジェクトや応答オブジェクトを変更し、要求と応答のサイクルを制御できます。ミドルウェアは次のようないくつかのことを実行できます。

  • 任意のコードを実行します。
  • リクエストとレスポンスを変更します。
  • リクエストとレスポンスのサイクルを終了します。
  • チェーン内の次のミドルウェアを呼び出します。

Express.js のミドルウェアの基本的な署名は次のとおりです:

function middleware(req, res, next) {
    // Lógica do middleware
    next(); // Chama o próximo middleware
}
ログイン後にコピー

ミドルウェアの種類

Express では、いくつかの種類のミドルウェアを見つけることができます:

  1. アプリケーション ミドルウェア: これらは、アプリケーション全体または一連のルートに影響を与えるミドルウェアです。
  2. ルートミドルウェア: 1 つ以上のルートに固有です。
  3. 統合ミドルウェア: Express によって直接提供される、express.json() や Express.static() など。
  4. サードパーティ ミドルウェア: morgan や cors など。Express の機能を拡張するためにインストールできます。

ミドルウェアはどのように機能するのか?

リクエストが受信されると、「ミドルウェア チェーン」を通過します。各ミドルウェアはリクエストを処理し、その実行の最後に、(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 (クロスオリジンリソース共有) を有効にします。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!