読者です 読者をやめる 読者になる 読者になる

フロントサイドエンジニアという選択肢

HTMLコーダー → ECサイト運営 → システムエンジニア という経歴の著者がフロントサイトエンジニアという職業に今後の活路を見出し、その道に進むために取得した技術を貯めておくブログ

(Node.js)リクエスト情報を取得するサンプル

Node.jsでリクエストの情報を取得する方法です。onメソッドでrequestイベントにコールバック関数を登録した時、引数としてRequestオブジェクトResponseオブジェクトが入ってきます。Requestオブジェクトからデータを取得し、Responseオブジェクトでクライアントにhtml情報として返すサンプルをメモしておきます。

// http モジュール呼び出し
var http = require(' http ');

// URL解析モジュール
var urlParser = require(' url ');

// サーバーを作成
var server = http.createServer();

// リクエスト情報を取得する
var getInformations = function(request){
	var url = urlParser.parse(request. url);
	return {
		'アドレス情報':{
			'アドレス': url.href,
			'プロトコル': url.protocol,
			'ホスト名': url.hostname,
			'パス': url.path,
			'クエリ': url.query
		},
		'リクエスト情報':{
			'データ送信':request.method,
			'ホスト(ヘッダー情報)':request.headers['host'],
			'コネクション(ヘッダー情報)':request.headers['connection'],
			'キャッシュコントロール(ヘッダー情報)':request.headers['cache-control'],
			'アクセプト(ヘッダー情報)':request.headers['accept'],
			'アップグレードリクエスト(ヘッダー情報)':request.headers['upgrade-insecure-requests'],
			'ユーザーエージェント(ヘッダー情報)':request.headers['user-agent'],
			'エンコード(ヘッダー情報)':request.headers['accept-encoding'],
			'言語(ヘッダー情報)':request.headers['accept-language'],
		}
	};
};

// オブジェクトをhtmlリスト形式に書き出す
var setInformations = function(dataObject){
	var keys = Object.keys(dataObject);
	var returnText = '';
	for(var k in keys){
		var key = keys[k];
		if(dataObject[key] instanceof Object){
			returnText += '<h1>' + key + '</h1>\n' + '<dl>\n' + setInformations(dataObject[key]) + '</dl>\n';
		}
		else{
			returnText += '  <dt>' + key + '</dt>\n    <dd>' + dataObject[key] + '</dd>\n';
		}
	}
	return returnText ;
}

// サーバーのリクエスト時のイベントを設定
 server.on('request', function(request, response){
	// レスポンス情報を送信	
	response.writeHead(200, {'content-Type':'text/html; charset=UTF-8'});
	// リクエスト情報を取得
	var requestData = getInformations(request);
	// リクエスト情報をhtmlに変換
	var htmlText = setInformations(requestData);
	// htmlを返す
	response.write(htmlText);
	// 修了
	response.end();
});

// 受付開始
 server.listen(3000, '127.0.0.1');