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 では、いくつかの種類のミドルウェアを見つけることができます:
リクエストが受信されると、「ミドルウェア チェーン」を通過します。各ミドルウェアはリクエストを処理し、その実行の最後に、(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 のインストールと使用:
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 サイトの他の関連記事を参照してください。