首頁  >  文章  >  web前端  >  淺談使用Node.js搭建一個簡單的 HTTP 伺服器

淺談使用Node.js搭建一個簡單的 HTTP 伺服器

青灯夜游
青灯夜游轉載
2021-06-10 10:12:392237瀏覽

這篇文章給大家使用Node.js搭建一個簡單的 HTTP 伺服器來試著操縱電腦資源。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

淺談使用Node.js搭建一個簡單的 HTTP 伺服器

什麼是 HTTP 服務?

HTTP 協定是什麼?

  • 超文本傳輸協議,一個應用層協議,一個在電腦世界裡專門在兩點之間傳輸文字、圖片、音訊、視訊等超文本資料的約定和規範。

【推薦學習:《nodejs 教學》】

#一個網頁請求,它包含兩次HTTP 套件交換

  • 瀏覽器向HTTP 伺服器發送請求HTTP 套件
  • HTTP 伺服器向瀏覽器傳回HTTP 套件

HTTP 服務要做什麼事情?

  • 解析進來的HTTP 請求封包
  • 返回對應的HTTP 返回封包

實現一個簡單的HTTP 伺服器

新建一個http.js 文件,寫入以下程式碼:

// http 是 Node 自带的包,在这里加载引入
const http = require('http')

// 通过 http.createServer 创建一个 Web 静态服务器
http.createServer(function (request, response) {
  // 监听到请求之后所做的操作
  // request 对象包含:用户请求报文的所有内容
  // 我们可以通过request对象,获取用户提交过来的数据

  // response 响应对象,用来响应一些数据
  // 当服务器想要向客户端响应数据的时候,就必须使用response对象
  response.writeHead(200);
  response.end('hello world');
}).listen(4000, function () {
  // 通过 listen 监听端口,开启服务
  console.log("服务器已经启动,可通过以下地址:http://localhost:4000");
})

終端機執行指令:node http.js

淺談使用Node.js搭建一個簡單的 HTTP 伺服器

可以看到,服務已經啟動,在Chrome 開啟http://localhost:4000

淺談使用Node.js搭建一個簡單的 HTTP 伺服器

頁面上已經把response.end() 的內容顯示出來,這樣一個簡單的HTTP 伺服器就實現了。

fs 模組載入靜態資源

新一個index.js 檔:

// 加载模块
const http = require('http')
const fs = require('fs');

// 创建服务
http.createServer(function (request, response) {
  console.log(request.url);
  response.writeHead(200);
  response.end();
}).listen(3000)

終端運行:node index.js,瀏覽器打開localhost:3000

淺談使用Node.js搭建一個簡單的 HTTP 伺服器

這裡發送了兩個請求,一個是當前url http://localhost:3000/的請求;另一個是右上角圖示http://localhost:3000/favicon.ico 的請求:

淺談使用Node.js搭建一個簡單的 HTTP 伺服器

#那麼這裡對/favicon.ico 的請求做一些處理,直接回傳200 狀態碼即可;然後透過fs 模組去處理靜態資源

// 加载模块
const http = require('http')
const fs = require('fs');

// 创建服务
http.createServer(function (request, response) {
  // console.log(request.url);
  // 如果是图标请求则直接返回 200
  if (request.url == '/favicon.ico') {
    response.writeHead(200);
    response.end()
    return
  }

  response.writeHead(200);
  // fs 是文件模块,通过 createReadStream 可以读取本地文件,这里读取的是目录下的 index.html 文件
  // 通过 pipe 写入响应对象
  fs.createReadStream(__dirname + '/index.html').pipe(response)
}).listen(3000)

index.html 檔案內容如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>实现一个简单的HTTP服务器</title>
</head>
<body>
  <div>hello HTTP服务</div>
</body>
</html>

終端運行:node index.js 啟動服務:

淺談使用Node.js搭建一個簡單的 HTTP 伺服器

可以看到,這個HTTP 伺服器已經把電腦的靜態資源index.html 給到瀏覽器了。

這樣一個簡單的讀取電腦靜態資源的 HTTP 伺服器就實現了!

在這個HTTP 伺服器中使用了Node.js 內建的兩個模組httpfs,在Node.js 中還有很多這樣可以幫助我們實現強大功能的模組,也正是這些模組讓Node.js 生態變得更強大。

程式碼如下:

https://github.com/V-vincent/node-introduction

更多程式相關知識,請訪問:程式設計影片! !

以上是淺談使用Node.js搭建一個簡單的 HTTP 伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除