無涯教程: Node.js - Web模組

zybing發表於2021-09-09

Web伺服器是一個軟體應用程式,它處理HTTP客戶端(例如Web瀏覽器)傳送的HTTP請求,並返回網頁以響應客戶端, Web伺服器通常提供html文件以及影像,樣式表和指令碼。

Web應用架構

Web應用程式通常分為四層-

圖片描述

  • Client                - 該層由Web瀏覽器,移動瀏覽器或可以向Web伺服器發出HTTP請求的應用程式組成。

  • Server               - 此層具有Web伺服器,可以攔截客戶端發出的請求並將響應傳遞給他們。

  • Business Layer  - 該層包含應用伺服器,Web伺服器利用該伺服器來執行所需的處理。

  • Data Layer        - 此層包含資料庫或任何其他資料來源。

建立Web伺服器

Node.js提供了一個 http 模組,該模組可用於建立伺服器的HTTP客戶端,以下是偵聽8081埠的HTTP伺服器的最基本結構。

建立一個名為server.js的js檔案-

var http=require('http');
var fs=require('fs');
var url=require('url');
//Create a server
http.createServer( function (request, response) {  
   //Parse the request containing file name
   var pathname=url.parse(request.url).pathname;
   
   //Print the name of the file for which request is made.
   console.log("Request for " + pathname + " received.");
   
   //Read the requested file content from file system
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         
         //HTTP Status: 404 : NOT FOUND
         //Content Type: text/plain
         response.writeHead(404, {'Content-Type': 'text/html'});
      } else {	
         //Page found	  
         //HTTP Status: 200 : OK
         //Content Type: text/plain
         response.writeHead(200, {'Content-Type': 'text/html'});	
         
         //Write the content of the file to response body
         response.write(data.toString());		
      }
      
      //Send the response body 
      response.end();
   });   
  }).listen(8081);
  //Console will print the message
  console.log('Server running at ');

接下來,讓我們在建立server.js的同一目錄中建立以下名為index.htm的html檔案。

   
      Sample Page
   
   
   
      Hello World!   

現在讓我們執行server.js以檢視輸出-

$node server.js

驗證輸出。

Server running at 

向伺服器發出請求

在任何瀏覽器中開啟index.htm,以檢視以下輸出。

圖片描述

在伺服器端驗證輸出。

Server running at Request for /index.htm received.

建立Web客戶端

可以使用 http 模組建立Web客戶端。讓我們檢查以下示例。

建立一個名為client.js的js檔案-

var http=require('http');
//Options to be used by request 
var options={
   host: 'localhost',
   port: '8081',
   path: '/index.htm'  
};
//Callback function is used to deal with 
responsevar callback=function(response) {
   //Continuously update stream with data
   var body='';
   response.on('data', function(data) {
      body += data;
   });
   
   response.on('end', function() {
      //Data received completely.
      console.log(body);
   });}
   //Make a request to the servervar
    req=http.request(options, callback);
    req.end();

現在從不同於server.js的其他命令終端執行client.js以檢視輸出-

$node client.js

驗證輸出。

   
      Sample Page
   
   
   
      Hello World!   

在伺服器端驗證輸出。

Server running at Request for /index.htm received.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/855/viewspace-2796728/,如需轉載,請註明出處,否則將追究法律責任。

相關文章