Web サーバーとは、一般に Web サイト サーバーを指します。Web サーバーは、インターネット上の特定の種類のコンピュータ上に常駐するプログラムを指します。Web サーバーの基本的な機能は、Web 情報の閲覧サービスを提供することです。 HTTP プロトコル、HTML ドキュメント形式、URL をサポートし、クライアントの Web ブラウザと連携するだけで済みます。
ほとんどの Web サーバーはサーバーサイド スクリプト言語 (php、python、ruby) などをサポートしており、スクリプト言語を通じてデータベースからデータを取得し、結果をクライアント ブラウザに返します。
現在、最も主流の Web サーバーは Apache、Nginx、IIS の 3 つです。
クライアント - クライアントは通常ブラウザを指します。ブラウザは HTTP プロトコルを通じてサーバーにデータを要求できます。
サーバー - サーバーは通常 Web サーバーを指し、クライアント要求を受信し、応答データをクライアントに送信できます。
ビジネス - ビジネス層。データベースとの対話、論理演算、外部プログラムの呼び出しなど、Web サーバーを介したアプリケーションの処理。
データ - データ層。通常はデータベースで構成されます。
Node.js は http モジュールを提供します。http モジュールは主に HTTP サーバーとクライアントの構築に使用されます。HTTP サーバーまたはクライアント機能を使用するには、http モジュールを呼び出す必要があります。コードは次のとおりです:
var http = require('http');
以下は、最も基本的な HTTP サーバー アーキテクチャ (ポート 8080 を使用) のデモンストレーションです。server.js ファイルを作成します。コードは次のとおりです。
var http = require('http');
var fs = require('fs');
var url = require('url');
// サーバーを作成する
http.createServer( function (request, response) {
// ファイル名を含めてリクエストを解析します
var pathname = url.parse(request.url).pathname;
// 要求されたファイル名を出力します
console.log("Request for " + pathname + " received.");
// 要求されたファイルの内容をファイル システムから読み取ります
fs.readFile(pathname.substr(1), function (err, data) {
if (err) {
console.log(err);
// HTTP ステータス コード: 404 : NOT FOUND
// Content Type: text/html
response.writeHead(404, {'Content-Type': 'text/html'});
}else{
// HTTP ステータス コード: 200 : OK
// Content Type: text/html
response.writeHead(200, {'Content-Type': 'text/html'});
// 応答ファイルの内容
response.write(data.toString());
}
// レスポンスデータを送信する
response.end();
});
}).listen(8080);
// コンソールには次の情報が出力されます
console.log('Server running at http://127.0.0.1:8080/');
次に、このディレクトリにindex.html ファイルを作成します。コードは次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML チュートリアル (w3cstudy.cc)</title>
</head>
<body>
<h1>最初の見出し</h1>
<p>最初の段落です。</p>
</body>
</html>
server.js ファイルを実行します。
$ node server.js Server running at http://127.0.0.1:8080/
次に、次の図に示すように、ブラウザでアドレス http://127.0.0.1:8080/index.html を開きます。
server.js を実行した場合のコンソール出力情報は以下のとおりです。
Server running at http://127.0.0.1:8080/ Request for /index.html received. # クライアントリクエスト情報
ノードは、Web クライアントを作成するために http モジュールを導入し、client.js ファイルを作成する必要があります。コードは次のとおりです:
var http = require('http');
// リクエストのオプション
var options = {
host: 'localhost',
port: '8080',
path: '/index.html'
};
// 応答を処理するコールバック関数
var callback = function(response){
// データを更新し続ける
var body = '';
response.on('data', function(data) {
body += data;
});
response.on('end', function() {
// データ受信完了
console.log(body);
});
}
// サーバーにリクエストを送信します
var req = http.request(options, callback);
req.end();
新しいターミナルを開き、client.js ファイルを実行すると、出力は次のようになります。
$ node client.js
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML チュートリアル (w3cstudy.cc)</title>
</head>
<body>
<h1>最初の見出し</h1>
<p>最初の段落です。</p>
</body>
</html>
server.js を実行した場合のコンソール出力情報は以下のとおりです。
Server running at http://127.0.0.1:8080/ Request for /index.html received. # クライアントリクエスト情報