Express.js で始める REST API 開発: app.use と app.get の実践例

2024-04-09

Express.jsにおける app.use と app.get の違い

app.useapp.get は、Express.js でルーティングを定義するために使用されるメソッドです。 どちらも異なる目的を持ち、異なる方法で使用されます。

app.use

  • ミドルウェアを登録するために使用されます。
  • ミドルウェアは、リクエスト処理の前後に実行される関数です。
  • すべてのパスに適用されるグローバルミドルウェアと、特定のパスにのみ適用されるローカルミドルウェアがあります。
  • 例:認証、ロギング、静的ファイルの処理など

app.get

  • 特定のパスに対する GET リクエストを処理するために使用されます。
  • パスと、そのパスにアクセスしたときに実行されるコールバック関数を指定します。
  • 複数の app.get を使用して、異なるパスに対する異なる処理を定義できます。
  • 例:ユーザー情報の取得、ページの表示など

主な違い

機能app.useapp.get
目的ミドルウェアの登録GET リクエストの処理
適用範囲すべてのパスまたは特定のパス特定のパス
リクエストメソッドすべてGET
使用例認証、ロギング、静的ファイルの処理ユーザー情報の取得、ページの表示

コード例

// すべてのパスに適用されるグローバルミドルウェア
app.use((req, res, next) => {
  console.log('Request received:', req.method, req.url);
  next();
});

// 特定のパスに対する GET リクエスト
app.get('/users', (req, res) => {
  res.send('ユーザー一覧');
});

// 特定のパスに対する POST リクエスト
app.post('/users', (req, res) => {
  // ユーザー情報の登録処理
});
  • app.use はミドルウェアを登録するために使用し、app.get は特定のパスに対する GET リクエストを処理するために使用します。
  • どちらもルーティングを定義するために使用されますが、異なる目的と使用方法を持ちます。
  • コード例を参考に、それぞれの使い分けを理解しましょう。



すべてのパスに適用されるグローバルミドルウェア

app.use((req, res, next) => {
  // リクエストの開始時刻を記録
  req.startTime = Date.now();
  
  // リクエスト処理の続き
  next();
});

app.get('/', (req, res) => {
  // レスポンス処理
  const elapsedTime = Date.now() - req.startTime;
  console.log(`処理時間: ${elapsedTime}ms`);
  res.send('Hello World!');
});

このコードでは、すべてのパスに対して、リクエストの開始時刻を記録するミドルウェアを登録しています。 その後、app.get/ パスに対する GET リクエスト処理を定義しています。 レスポンス処理の中で、記録した開始時刻と現在の時刻の差から処理時間を算出し、出力しています。

app.use('/api', (req, res, next) => {
  // API キーの認証処理
  const apiKey = req.headers['x-api-key'];
  if (!apiKey || apiKey !== 'secret-key') {
    return res.status(401).send('Unauthorized');
  }
  
  // 認証成功
  next();
});

app.get('/api/users', (req, res) => {
  // ユーザー情報の取得処理
  res.send('ユーザー一覧');
});

このコードでは、/api パス以下のすべてのパスに対して、API キーの認証処理を行うミドルウェアを登録しています。 認証に成功した場合のみ、次の処理に進むようにしています。 /api/users パスに対する GET リクエストは、認証処理を通過した後に、ユーザー情報の取得処理を実行します。

静的ファイルの処理

app.use(express.static('public'));

app.get('/', (req, res) => {
  res.sendFile('index.html', { root: 'public' });
});

このコードでは、express.static ミドルウェアを使用して、public ディレクトリ内の静的ファイルを処理しています。 / パスに対する GET リクエストは、index.html ファイルを返すように設定されています。




app.use と app.get 以外のルーティング方法

その他の HTTP メソッド

app.get 以外にも、app.postapp.putapp.delete などのメソッドを使用して、特定の HTTP メソッドに対する処理を定義できます。

app.post('/users', (req, res) => {
  // ユーザー情報の登録処理
});

app.put('/users/:id', (req, res) => {
  // ユーザー情報の更新処理
});

app.delete('/users/:id', (req, res) => {
  // ユーザー情報の削除処理
});

パラメータ付きルート

:id のようにコロン(:) を付けた文字列は、ルートパラメータとして使用できます。 リクエストオブジェクトからパラメータ値を取得して処理に利用できます。

app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  // ユーザー情報の取得処理
});

マウントポイント

別のルーターをサブパスにマウントすることができます。 コードを分割して管理しやすくなります。

const userRouter = express.Router();

userRouter.get('/', (req, res) => {
  // ユーザー一覧の取得処理
});

userRouter.get('/:id', (req, res) => {
  // ユーザー情報の取得処理
});

app.use('/users', userRouter);

まとめ

app.useapp.get は最も基本的なルーティング方法ですが、他にも様々な方法があります。 状況に合わせて適切な方法を選択しましょう。


node.js express


chokidar vs nodemon:ファイル監視ライブラリの比較

Node. jsには、ファイル監視機能を提供するライブラリが多数存在します。ここでは、代表的なライブラリ2つを紹介します。chokidarは、ファイルシステムの変更を監視する軽量なライブラリです。使い方は以下の通りです。nodemonは、Node...


Node.js のセキュリティ対策:Port 80 で実行する場合のベストプラクティス

このガイドでは、Ubuntu や Linode などの Linux 環境で Node. js を Port 80 で安全に実行するためのベスト プラクティスについて説明します。Port 80 は、Web サーバーやその他のネットワーク サービスで一般的に使用されるデフォルト ポートです。Node...


【徹底比較】HTML、Node.js、FFmpeg vs WebRTC vs WebSocket:リアルタイムHTTPストリーミングの最適な選択

HTML は、動画プレーヤーを埋め込むために使用されます。プレーヤーは、ビデオストリームを受信し、ブラウザ上でデコードして表示します。HTML5 の <video> タグを用いることで、シンプルなプレーヤーを簡単に作成できます。Node. js は、ストリーミングサーバーを作成するために使用されます。Node...


プロジェクトごとにNode.jsバージョンをスマートに管理:.nvmrcファイルと自動化ツールの活用術

Node. js のバージョン管理ツールである nvm では、.nvmrc ファイルを使用して、特定のディレクトリ内で使用する Node. js のバージョンを指定できます。しかし、毎回手動で nvm use コマンドを実行するのは煩わしいですよね。そこで、今回紹介するのは、.nvmrc ファイルがあるディレクトリに移動するたびに、自動的に nvm use コマンドを実行するスクリプトです。...


npm ci コマンドと yarn を活用した package-lock.json ファイルの管理

このファイルはコミットすべきかどうか、開発者にとってよくある疑問です。一般的には、package-lock. json ファイルをコミットすることを 推奨 します。理由:環境の一貫性: package-lock. json ファイルは、すべての開発者が同じバージョンのパッケージをインストールし、同じ環境で作業できるようにします。...


SQL SQL SQL SQL Amazon で見る



ミドルウェアを使いこなしてExpress.js アプリケーションを強化しよう

app. use は、以下の役割を担います。ミドルウェアを登録するミドルウェアの実行順序を制御する特定のパスにのみミドルウェアを適用するミドルウェアには、さまざまな種類があります。ルーティング:リクエストのパスに基づいて処理を分岐する認証:ユーザーの認証を行う


シンプルな疑問を解決! express.Router と app.get の違い

概要app. get: 特定の HTTP メソッド (GET) とパスに対するリクエストを処理するための関数です。express. Router: ルーティング機能を管理するためのオブジェクトです。複数のルートをまとめて管理したり、ミドルウェアを適用したりするのに役立ちます。