ホームページ >ウェブフロントエンド >jsチュートリアル >nodejs リクエストの概要 routing_node.js

nodejs リクエストの概要 routing_node.js

WBOY
WBOYオリジナル
2016-05-16 16:42:241712ブラウズ

一般的に言えば、サーバーは異なる 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;
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。