一般的に言えば、サーバーは異なる URL リクエストに対して異なる応答をする必要があります。リクエストされた URL とその他の必須の GET パラメーターと POST パラメーターをルートに提供し、ルートはこれらのデータに基づいて対応するコードを実行する必要があります。必要なデータはすべてリクエスト オブジェクトに含まれており、onRequest() コールバック関数の最初のパラメータとして渡されます。このデータを解析するには、追加のモジュール、つまり url モジュールとクエリ文字列モジュールを呼び出す必要があります。
URL:こちら
モジュールには、URL 解決と解析のためのユーティリティがあり、require('url') を
に呼び出します。
使ってください。
解析された URL オブジェクトには、URL 文字列に存在するかどうかに応じて、次のフィールドの一部またはすべてが含まれます。URL
の例は、URL 文字列に含まれていないものには含まれません。
'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
href: 最初に解析された完全な URL。プロトコルとホストは両方とも小文字です。
例: 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
プロトコル: 要求プロトコル (小文字)。
例: 'http:'
host: ポート情報を含む、URL の完全な小文字のホスト部分。
例: 'host.com:8080'
auth: URL の認証情報部分。
例: 'user:pass'
hostname: ホストの小文字のホスト名部分のみ。
例: 'host.com'
port: ホストのポート番号部分。
例: '8080'
pathname: URL のパス セクション。ホストの後、クエリの前にあり、最初のスラッシュが存在する場合はそれも含みます。
例: '/p/a/t/h'
search: URL の「クエリ文字列」部分 (先頭の疑問符を含む)。
例: '?query=string'
path: パス名と検索の連結
例: '/p/a/t/h?query=string'
query: クエリ文字列の 'params' 部分、またはクエリ文字列で解析されたオブジェクト。
例: 'query=string' または {'query':'string'}
ハッシュ: ポンド記号を含む URL の「フラグメント」部分。
例: '#ハッシュ'
依存関係注入を使用してルーティング モジュールを緩やかに追加します。ルーティングの対象となる関数はリクエスト ハンドラーと呼ばれます。リクエスト処理関数の実装では、requestHandlers という名前のモジュールを作成する必要があります。もちろん、別の名前を付けることもできます。また、リクエスト ハンドラーごとにプレースホルダー関数を追加し、これらの関数をモジュール メソッドとしてエクスポートします。これにより、リクエスト ハンドラーとルーティング モジュールが接続され、ルーティングを追跡できるようになります。
特に、一連のリクエスト ハンドラーはオブジェクトを介して渡される必要があり、このオブジェクトは疎結合の方法で Route() 関数に挿入される必要があります。
連想配列から要素を取得するのと同じように、渡されたオブジェクトからリクエスト処理関数を取得できるので、handle[pathname](); のようなシンプルでスムーズな式が得られます。コードは次のようになります:
var handle = {} handle["/"] = requestHandlers.start; handle["/start"] = requestHandlers.start; handle["/upload"] = requestHandlers.upload;