iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 4
0
自我挑戰組

通過Node.js了解後端運作原理!系列 第 4

Day4. 建立HTTP網站伺服器程式

(關於NPM安裝模組的部份會找時間補充到前一天或是使用到時順便介紹)

今天我們要建立一個可以讓使用者存取檔案的網站伺服器程式。

今天用到的都是Node.js內建模組,共有四個

  1. http 用以建立網路伺服器,並可以監聽指定的Port
  2. fs 用來檢查檔案是否存在與存取檔案
  3. url 用來解析客戶端傳過來的網址要求
  4. path 用來將要求拼裝成檔案目錄的路徑
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
//建立一個伺服器
var server = http.createServer(function(req,res){
	//收到網址要求並將其解析
	var filename = url.parse(req.url).pathname;
	//將解析後的要求轉為檔案路徑
	var filepath = path.join(__dirname,filename);

	//判斷路徑下的檔案是否存在
	fs.exists(filepath,function(exists){
		//不存在,回傳404頁面給客戶端跳出
		if(!exists){
			//前者404為HTTP狀態碼,後面則是內容類型,這邊是HTML文字,編碼用utf-8
			res.writeHead(404,{'Content-Type': 'text/html; charset=utf-8'});
			res.end('<h1 style="color:red">404 Not Found!</h1>\n');
			return;
		}
		//存在,則將存取檔案內容呈現在瀏覽器上
		fs.readFile(filepath,function(err,content){
			res.writeHead(200,{'Content-Type':'text/html; charset=utf-8'});
			//存取過程失敗則會執行此行
			if (err){
				res.end('<h1 style="color:red">存取失敗</h1>\n');
			}
			res.end(content);
		})
	})
});

//監聽port:12345
server.listen(12345);

//網址為本地端:127.0.0.1:12345
console.log('Server Running!');

實作這個程式後,體認了解到檔案通常一開始宣告的檔案內容類型及編碼,能夠讓瀏覽器更正確的去解讀這一份檔案,反之也可以裡用來做些不好的事情。

而關於讀取檔案這一塊,應該也能做到權限控管才是。
對於後端流程今天有一點感覺了!


上一篇
Day3. 模組機制
下一篇
Day5. NPM介紹
系列文
通過Node.js了解後端運作原理!30

尚未有邦友留言

立即登入留言