Webフレームワークは、HTMLページ、スクリプト、画像などのリソースを異なるルートで提供します。
以下の関数は、Expressアプリケーションでルートを定義するために使用されます –
app.method(path, handler)
このMETHODは、HTTPの動詞であるget、set、put、deleteのいずれかに適用できます。
Path は、リクエストが実行されるルートです。
Handler は、関連するルートで一致するリクエスト タイプが見つかったときに実行されるコールバック関数です。 例えば、
var express = require('express');var app = express();app.get('/hello', function(req, res){ res.send("Hello World!");});app.listen(3000);
アプリケーションを実行してlocalhost:3000/helloにアクセスし、サーバーがルート”/hello “でgetリクエストを受信した場合、Expressアプリはこのルートに接続されたコールバック関数を実行し、レスポンスとして「Hello World! 例えば、
var express = require('express');var app = express();app.get('/hello', function(req, res){ res.send("Hello World!");});app.post('/hello', function(req, res){ res.send("You just called the post method at '/hello'!\n");});app.listen(3000);
このリクエストをテストするには、ターミナルを開き、cURLを使用して次のリクエストを実行します –
curl -X POST "http://localhost:3000/hello"
特別なメソッドです。 allという特殊なメソッドがExpressには用意されており、特定のルートですべての種類のhttpメソッドを同じ関数で処理することができます。
この方法は一般的にミドルウェアの定義に使用されますが、これについてはミドルウェアの章で説明します。
ルーター
上記のようなルートの定義は、メンテナンスが非常に面倒です。 メインのindex.jsファイルからルートを分離するために、Express.Routerを使用します。
var express = require('express');var router = express.Router();router.get('/', function(req, res){ res.send('GET route on things.');});router.post('/', function(req, res){ res.send('POST route on things.');});//export this router to use in our index.jsmodule.exports = router;
さて、このルーターをindex.jsで使用するには、app.listen関数呼び出しの前に次のように入力します。 これで、アプリが「/things」で受け取るリクエストは、things.jsのルーターで処理されるようになります。 things.jsの’/’ルートは、実際には’/things’のサブルートとなっています。
ルーターは、懸念事項を分離し、コードの関連部分をまとめておくのに非常に役立ちます。 保守性の高いコードを構築するのに役立ちます。