0
A
答えて
2
複数の独立した要求ハンドラを作成する上位レベルの方法は、a simple framework like Express
を使用することです。あなたが求めていることを技術的に行う必要はありませんが、Expressはそのようなタスクを容易にするために構築されています。
複数のルートハンドラとシンプルExpressサーバは、次のようになります。
var express = require('express');
var app = express();
app.get('/', function(req, res) {
// handle the/route here
});
app.get('/hello', function(req, res) {
// handle the /hello route here
});
app.listen(3000);
ザ・エクスプレスのフレームワークは、上記のように、あなたが単にルートを追加できるようにするために構築されています。また、あなたの元に厳密に答えて
...などのミドルウェア処理や、Cookie処理、セッション処理、ポスト処理、などのように事前に構築されたミドルウェア・モジュールの多くへのアクセスなど、多くの、より多くの機能が含まれています通常のHTTPモジュールを使用し、既存のリスナーに2番目のルートを追加しない場合は、サーバー上のrequest
eventをリッスンすることができます(これは、ルートハンドラを追加する最も簡単な方法ではないと思います)。実際に
var http = require('http');
var serverFunction = function(req, res) {
if (req.url === '/') {
//does something
}
}
var server = http.createServer(serverFunction).listen(3000);
server.on('request', function(req, res) {
// see all incoming requests here
if (req.url === '/hello') {
// process /hello route here
}
});
あなたがhttp server doc carefullyを読めば、あなたはあなたのserverFunction
がrequest
イベントのために自動的に登録されたリスナー以外の何ものでもありませんし、イベント形式のインターフェイスを備えたとして、あなたがちょうどそのためのより多くのリスナーを作成できることがわかりますあなたが選ぶならば、イベント。
0
低レベルのNodeJS HTTP APIを使用すると仮定します。関数の構成を使用して、複数のハンドラを1つのハンドラにまとめることができます。各ハンドラは、req.url
が一致しない場合は、次のハンドラに実行を渡す必要があります。
var http = require('http');
var handler1 = function(req, res) {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write('/');
res.end();
}
var handler2 = function(req, res) {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write('/Hello');
res.end();
}
var middleware = compose([wrapHandler('/', handler1),
wrapHandler('/hello', handler2)]);
http.createServer(middleware).listen(3000);
function wrapHandler(path, cb) {
return function (req, res, next) {
if (req.url === path) {
cb(req, res);
} else {
next();
}
};
}
function notFoundHandler(req, res) {
res.writeHead(404, { 'Content-Type': 'text/html' });
res.write('No Path found');
res.end();
};
// adapted from koa-compose
function compose(middleware) {
return function (req, res){
let next = function() {
notFoundHandler.call(this, req, res);
};
let i = middleware.length;
while (i--) {
let thisMiddleware = middleware[i];
let nextMiddleware = next;
next = function() {
thisMiddleware.call(this, req, res, nextMiddleware);
}
}
return next();
}
}
関連する問題
- 1. Nodejsでサーバーを作成するには?
- 2. CFExecute私はCofdfusionサーバー上で次のコードを作成しAppcmd.exeの
- 3. 流星プロジェクトのNodeJS静的サーバー作成
- 4. PHPでnodejsサーバーを作成するには?私はPHPでnodejsを実行しようとしている
- 5. NodeJSサーバーのResponse.write()または.toString()(bug?)
- 6. NodeJSサーバー
- 7. Nodejs - サーバー
- 8. 私は次の設定で私のelasticsearchサーバー上でインデックスを作成しました
- 9. NodeJSサーバーのコールバック
- 10. は、私は、次のURLで確認作業のコードを作成しようとしているフラスコベースのPythonサーバー
- 11. NodeJSを使用したサーバー側HighStockチャートの生成
- 12. 多次元モードでSSASサーバーを作成する方法は?
- 13. Nodejsサーバーのホスト名
- 14. nodejsソケットプログラミング - 私は、サーバーがコマンドに次のように特定のポートでリスニングと期待していたデータ長
- 15. NodeJS - 単純転送サーバーを作成する
- 16. リモートデバッグ、サーバーの作成
- 17. WebSocketサーバーの作成
- 18. 私のCouchbaseサーバーでプライマリインデックスを作成する方法は?
- 19. WebDeployを使用してサーバーまたはサイトパッケージを作成する
- 20. のClojure(アレフ)サーバーは、私は次のコードを持っている
- 21. 私は、サーバー
- 22. xcodeサーバーで作成したシミュレータを開くには?
- 23. は、どのように私は、このコマンドを使用してNodeJsでサーバーをソケットに接続NodeJs
- 24. 私は、Webサーバー(Nodejs)にAJAXポストJSONを使用しますが、Webサーバはクライアント
- 25. HTTP_X_FORWARDED_FORは私のサーバー
- 26. SFTPサーバーまたはFTPSサーバー?
- 27. Ansible - 私は、次のCPU事実とサーバーをセットアップ戸惑いました
- 28. Herokuのは - buildpacksは今のところ</p> <p>、私は非常に単純なnodeJSサーバーを作成し始めましたスラグサイズ重すぎる
- 29. は、私は次のプロジェクトのクローンを作成したいgithubの
- 30. node.jsサーバー(EdgeJS)でサーバーを作成してAPIを参照する
あなたのソリューションは完璧に機能しました!ありがとう! – leonero