Express/Node.js でプログラム的に 404 レスポンスを送信する方法
JavaScript、Node.js、Express を使用してプログラム的に 404 レスポンスを送信する方法について説明します。
404 レスポンスとは?
404 レスポンスは、HTTP ステータスコードであり、要求されたリソースが見つからないことを示します。通常、ユーザーがブラウザで存在しないページにアクセスした場合や、サーバー側で適切なルートが定義されていない場合に発生します。
Express で 404 レスポンスを送信する手順
-
Express アプリケーションの作成
const express = require('express'); const app = express(); // ... other middleware and routes // 404 エンドポイント app.use((req, res) => { res.status(404).send('Not Found'); }); app.listen(3000, () => { console.log('Server listening on port 3000'); });
-
404 エンドポイントの定義
app.use
メソッドを使用して、すべてのリクエストに対して実行されるミドルウェアを定義します。- ミドルウェア関数内で、
res.status(404)
を使用してステータスコードを 404 に設定し、res.send('Not Found')
で "Not Found" というメッセージをクライアントに送信します。
- 適切な位置:404 エンドポイントは、他のすべてのルートの後に配置する必要があります。これにより、他のルートが一致しない場合にのみ実行されます。
エラーハンドリング
カスタムエラーページ
- テンプレートエンジン:EJS、Pug などのテンプレートエンジンを使用すると、よりカスタマイズされたエラーページを作成できます。
app.set('view engine', 'ejs'); app.use((req, res) => { res.status(404).render('404'); });
基本的な例
const express = require('express');
const app = express();
// 他のミドルウェアとルート
// 404 エンドポイント
app.use((req, res) => {
res.status(404).send('Not Found');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
エラーミドルウェアの使用
app.use((err, req, res, next) => {
if (err.statusCode === 404) {
res.status(404).send('Not Found');
} else {
// その他のエラー処理
}
});
- この方法では、エラーハンドリングミドルウェア内で 404 エラーを検出し、適切なレスポンスを送信します。
ルートの追加
app.get('*', (req, res) => {
res.status(404).send('Not Found');
});
- この方法では、すべてのルートにマッチしない場合に実行されるワイルドカードルートを追加します。
Express の組み込みエラーハンドラー
app.use(express.static('public'));
app.get('/', (req, res) => {
// ...
});
// 404 エンドポイント
app.use((req, res) => {
res.status(404).sendFile('public/404.html');
});
- Express の組み込みエラーハンドラーを使用することで、静的ファイルの配信やカスタムエラーページの表示が簡単になります。
カスタムエラーページのテンプレートエンジン
app.set('view engine', 'ejs');
app.use((req, res) => {
res.status(404).render('404');
});
- EJS などのテンプレートエンジンを使用して、よりカスタマイズされたエラーページを作成することができます。
Express の next() 関数
app.use((req, res, next) => {
// ...
next(); // 続くミドルウェアに処理を渡す
});
next()
関数を使用して、次のミドルウェアに処理を渡すことができます。これにより、複数のミドルウェアで 404 エラーを処理することができます。
javascript node.js express