多くのシナリオでは、サーバーはフォームの送信など、ユーザーのブラウザと対話する必要があります。
サーバーへのフォーム送信では、通常、GET / POSTリクエストが使用されます。
URLモジュール
- URL文字列を解析し、URLオブジェクトを返します
url.parse(urlstr[,parseQueryString[,slashesDenoteHost]])
パラメータ分析:
-
urlstr->解析するURL文字列
-
parseQueryString->ブール値:(デフォルトはfalse)URL送信を使用する場合、
url参数(?前的地址和?后的参数)
解析するには、このパラメーターをtrueに設定する必要があります。 -
slashesDenoteHost->ブール値:(デフォルトはfalse)Trueは次のことを意味します://次のセルの前後の最初のタグ/前がホストとして解釈されます
-
urlオブジェクトをurl文字列にプログラムします
url.format(obj)
-
からおよびに参加する
url.resolve(from,to)
HTTPモジュール
1.作業プロセスを取得します。
url模块
parseメソッドを使用して、顧客の要求パスにあるファイル名を見つけますfs模块
readfileメソッドを使用してファイルを読み取ります- 応答メッセージを送信して切断(応答)
例:
getリクエストのコンテンツを取得します。
GETリクエストはパスに直接埋め込まれているため、URLは?の後の部分を含む完全なリクエストパスであり、次のコンテンツをGETリクエストのパラメータとして手動で解析できます。
\ node.jsのurlモジュールの解析関数は、この関数を提供します。
var http = require('http');
var url = require('url');
var util = require('util');
http.createServer(function(req, res){
res.writeHead(200, {
'Content-Type': 'text/plain; charset=utf-8'});
res.end(util.inspect(url.parse(req.url, true)));
}).listen(3000);
URLのパラメータを取得します。
var http = require('http');
var url = require('url');
var util = require('util');
http.createServer(function(req, res){
res.writeHead(200, {
'Content-Type': 'text/plain'});
// 解析 url 参数
var params = url.parse(req.url, true).query;
res.write("网站名:" + params.name);
res.write("\n");
res.write("网站 URL:" + params.url);
res.end();
}).listen(3000);
2.作業後のプロセス
‘data’
関数をリクエストオブジェクトのイベントにバインドします。トリガーされるとページファイルが読み取られます‘end’
関数をリクエストオブジェクトのイベントにバインドします。トリガーされると、ファイルが読み取らquerystring模块
れ、bodyタグの下のコンテンツを抽出できます。- ラベルコントロールを介して
name属性名
関連するコントロールの値を取得します
例:
POSTリクエストのコンテンツを取得します。
POSTリクエストの内容はすべてリクエスト本文にあります。リクエスト本文としてhttp.ServerRequestの属性コンテンツはありません。リクエスト本文の送信を待つのは時間のかかる作業になる可能性があるためです。
たとえば、ファイルのアップロードなど、多くの場合、リクエスト本文の内容に注意を払う必要はありません。悪意のあるPOSTリクエストはサーバーリソースを大量に消費するため、node.jsはデフォルトでリクエスト本文を解析しません。必要な場合、手動で行う必要があります。
var http = require('http');
var querystring = require('querystring');
var util = require('util');
http.createServer(function(req, res){
// 定义了一个post变量,用于暂存请求体的信息
var post = '';
// 通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
req.on('data', function(chunk){
post += chunk;
});
// 在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。
req.on('end', function(){
post = querystring.parse(post);
res.end(util.inspect(post));
});
}).listen(3000);