Node.js Web モジュール


Webサーバーとは?

Webサーバーは一般的にウェブサイトサーバーを指し、インターネット上に存在する何らかの種類のコンピューターに常駐するプログラムです。Webサーバーの基本的な機能は、Web情報の閲覧サービスを提供することです。HTTPプロトコル、HTMLドキュメント形式、URLをサポートし、クライアントのWebブラウザーと連携するだけで済みます。

ほとんどのWebサーバーはサーバーサイドのスクリプト言語(PHP、Python、Ruby)などをサポートしており、スクリプト言語を介してデータベースからデータを取得し、結果をクライアントのブラウザーに返します。

現在最も主流の3つのWebサーバーはApache、Nginx、IISです。


Webアプリケーションアーキテクチャ

  • Client- クライアント:通常ブラウザーを指し、ブラウザーはHTTPプロトコルを介してサーバーにデータをリクエストできます。

  • Server- サーバーサイド:通常Webサーバーを指し、クライアントのリクエストを受け取り、クライアントへ応答データを送信できます。

  • Business- ビジネス層:Webサーバーを介してアプリケーションを処理します。データベースとの連携、論理演算、外部プログラムの呼び出しなどを行います。

  • Data- データ層:通常データベースで構成されます。


Nodeを使用して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ファイルを作成します。コードは次のとおりです。

index.html ファイル

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>サンプル(example.com)</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.     #  客户端请求信息

Nodeを使用してWebクライアントを作成する

Nodeで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>サンプル(example.com)</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.   # 客户端请求信息
その他の拡張