DOJO004

  • Dashool 創辦人
  • 喜歡調酒
  • Rails、Nextjs、TypeScript

Node.js - 06 URL 模組

JavaScript

 URL 模組將網址分割為可讀的部分。 
引入 URL 模組: 
var url = require('url');

使用 url.parse() 方法解析網址,他將回傳一個 URL object,其中網址的每個部分都將會是屬性:
var url = require('url');
var adr = '<http://localhost:8080/default.html?year=2017&month=february>';
var q = url.parse(adr, true);

console.log(q.host); //returns 'localhost:8080'
console.log(q.pathname); //returns '/default.html'
console.log(q.search); //returns '?year=2017&month=february'

var qdata = q.query; //returns an object: { year: 2017, month: 'february' }
console.log(qdata.month); //returns 'february'

Node.js File Server

 
現在我們知道如何解析查詢字串,並學會如何將 Node.js 當作 file server,我們將兩者結合,並提供客戶請求檔案。
 
建立兩個 html file,並保存在同一個資料夾當中
// summer.html
<!DOCTYPE html>
<html>
	<body>
		<h1>Summer</h1>
		<p>I love the sun!</p>
	</body>
</html>

// winter.html
<!DOCTYPE html>
<html>
	<body>
		<h1>Winter</h1>
		<p>I love the snow!</p>
	</body>
</html>

接著建立 Node.js file demo_fileserver.js,他將處理文件請求,並回傳內容給客戶端。若出現任何問題,將拋出 404 錯誤。
var http = require('http');
var url = require('url');
var fs = require('fs');

http.createServer(function (req, res) {
  var q = url.parse(req.url, true);
  var filename = "." + q.pathname;
  fs.readFile(filename, function(err, data) {
    if (err) {
      res.writeHead(404, {'Content-Type': 'text/html'});
      return res.end("404 Not Found");
    } 
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    return res.end();
  });
}).listen(8080);

重新啟動伺服器:
$ node demo_fileserver.js

網址輸入 http://localhost:8080/ 應該會看到錯誤,因為沒有根目錄的檔案。



網址輸入 http://localhost:8080/summer.html 應該會看到:



網址輸入 http://localhost:8080/winter.html 應該會看到:

 
 

版權所有 © 2023 DOJO004

Deployed on Zeabur