遊んでNode.js(三)を回転します.
9656 ワード
遊んでNode.js(三)を回転します.
前節はNodejsのHTTPサービスに対して、より詳細な解析を行いました.またコードをモジュール化することもできました.モジュール化後、機能は個々のファイルにあり、コードの維持に有利です.続いて、私達はどのように異なったHTTPの要求を処理しますかを考えてみて、この処理の異なっているHTTPの要求の東、伝説の中のルートの選択です.
ルートの説
まず、私たちは、ルーティングのために要求されたURLと他の必要なGETおよびPOSTパラメータを提供し、その後、ルーティングはこれらのデータに基づいて対応するコードを実行する必要があることを明確に知る必要がある.
したがって、HTTP要求を確認して、要求のURLとGET/POSTパラメータを抽出する必要がある.この機能はルートに属しますか?それともサーバーに属しますか?(モジュール自体の機能としても)確かに検討する価値がありますが、ここではとりあえずHTTPサーバの機能です.
必要なすべてのデータはrequestオブジェクトに含まれ,このオブジェクトはオンレクェスト関数の最初のパラメータ伝達として機能します.しかし、これらのデータを解析するためには、追加のNode.JSモジュールが必要です.それぞれurlとquerystringモジュールです.以下の図はデータの解析過程をよく説明します.
Just Do It
ここでは、Onerequest()関数にいくつかのロジックを加えて、ブラウザが要求するURLのパスを探します.
私たちが構築するアプリケーションでは、これは/startからの要求と/uploadからの要求が異なるコードで処理されることを意味しています.後でこれらの内容がどのように統合されているかを見ます.
ルートを作成しに来ました.router.jsというファイルを作成して、以下の内容を追加します.
私達のサーバーはルートの存在を知って有効に利用するべきです.もちろん、ハードコードでこの依存項をサーバに結びつけることができますが、他の言語のプログラミング経験から、これは非常につらいことだと教えられています.したがって、私たちは注入に依存する方法を使って、より緩やかにルートモジュールを追加します.
まず、サーバのstart()関数を拡張して、ルート関数をパラメータとして渡すようにします.
今アプリケーションを起動したら(node index.js、このコマンドラインをずっと覚えています)、その後一つのURLを要求したら、アプリケーションが対応する情報を出力するのを見ます.これは私達のHTTPサーバがすでにルートモジュールを使っています.そして要求された経路をルートに伝達します.はい、このルート部分はこれで終わります.コードを実行して出力を見てください.
PS:このブログは転送を歓迎しますが、ブログの住所と作者を明記してください.本人のレベルが限られていますので、間違いがあれば、ご指摘ください.ありがとうございます.
ブログアドレス:マーティンフォース注入依存大作
ブログの住所:http://www.cnblogs.com/voidy/
<.)≦
前節はNodejsのHTTPサービスに対して、より詳細な解析を行いました.またコードをモジュール化することもできました.モジュール化後、機能は個々のファイルにあり、コードの維持に有利です.続いて、私達はどのように異なったHTTPの要求を処理しますかを考えてみて、この処理の異なっているHTTPの要求の東、伝説の中のルートの選択です.
ルートの説
まず、私たちは、ルーティングのために要求されたURLと他の必要なGETおよびPOSTパラメータを提供し、その後、ルーティングはこれらのデータに基づいて対応するコードを実行する必要があることを明確に知る必要がある.
したがって、HTTP要求を確認して、要求のURLとGET/POSTパラメータを抽出する必要がある.この機能はルートに属しますか?それともサーバーに属しますか?(モジュール自体の機能としても)確かに検討する価値がありますが、ここではとりあえずHTTPサーバの機能です.
必要なすべてのデータはrequestオブジェクトに含まれ,このオブジェクトはオンレクェスト関数の最初のパラメータ伝達として機能します.しかし、これらのデータを解析するためには、追加のNode.JSモジュールが必要です.それぞれurlとquerystringモジュールです.以下の図はデータの解析過程をよく説明します.
url.parse(string).query
|
url.parse(string).pathname |
| |
| |
------ -------------------
http://localhost:8888/start?foo=bar&hello=world
--- -----
| |
| |
querystring(string)["foo"] |
|
querystring(string)["hello"]
もちろん,我々はまた,querystringモジュールを用いてPOST要求体におけるパラメータを解析することもできる.Just Do It
ここでは、Onerequest()関数にいくつかのロジックを加えて、ブラウザが要求するURLのパスを探します.
1 var http = require("http");
2 var url = require("url");
3
4 function start() {
5 function onRequest(request, response) {
6 var pathname = url.parse(request.url).pathname;
7 console.log("Request for " + pathname + " received.");
8 response.writeHead(200, {"Content-Type": "text/plain"});
9 response.write("Hello World");
10 response.end();
11 }
12
13 http.createServer(onRequest).listen(8888);
14 console.log("Server has started.");
15 }
16
17 exports.start = start;
はい、私たちのアプリケーションは、要求されたURLパスを通じて異なる要求を区別することができます.これにより、私たちは経路(未完成)を使用して、要求をURLパスを基準に処理プログラムにマッピングすることができます.私たちが構築するアプリケーションでは、これは/startからの要求と/uploadからの要求が異なるコードで処理されることを意味しています.後でこれらの内容がどのように統合されているかを見ます.
ルートを作成しに来ました.router.jsというファイルを作成して、以下の内容を追加します.
1 function route(pathname) {
2 console.log("About to route a request for " + pathname);
3 }
4
5 exports.route = route;
あなたが見たように、このコードは何もしていませんが、今は当たり前です.もっと多くのロジックを追加する前に、どうやってルートとサーバーを統合するかを確認します.私達のサーバーはルートの存在を知って有効に利用するべきです.もちろん、ハードコードでこの依存項をサーバに結びつけることができますが、他の言語のプログラミング経験から、これは非常につらいことだと教えられています.したがって、私たちは注入に依存する方法を使って、より緩やかにルートモジュールを追加します.
まず、サーバのstart()関数を拡張して、ルート関数をパラメータとして渡すようにします.
1 var http = require("http");
2 var url = require("url");
3
4 function start(route) {
5 function onRequest(request, response) {
6 var pathname = url.parse(request.url).pathname;
7 console.log("Request for " + pathname + " received.");
8
9 route(pathname);
10
11 response.writeHead(200, {"Content-Type": "text/plain"});
12 response.write("Hello World");
13 response.end();
14 }
15
16 http.createServer(onRequest).listen(8888);
17 console.log("Server has started.");
18 }
19
20 exports.start = start;
同時に、それに応じてindex.jsを拡張して、ルーティング関数をサーバに注入することができます.var server = require("./server");
var router = require("./router");
server.start(router.route);
ここでは私たちが伝達する関数はまだ何もしていません.今アプリケーションを起動したら(node index.js、このコマンドラインをずっと覚えています)、その後一つのURLを要求したら、アプリケーションが対応する情報を出力するのを見ます.これは私達のHTTPサーバがすでにルートモジュールを使っています.そして要求された経路をルートに伝達します.はい、このルート部分はこれで終わります.コードを実行して出力を見てください.
PS:このブログは転送を歓迎しますが、ブログの住所と作者を明記してください.本人のレベルが限られていますので、間違いがあれば、ご指摘ください.ありがとうございます.
ブログアドレス:マーティンフォース注入依存大作
ブログの住所:http://www.cnblogs.com/voidy/
<.)≦