Node http模塊學習:聊聊基本用法-世界熱文

          來源:php中文網 | 2023-02-04 12:03:35 |

          本篇文章給大家了解一下Node.js http模塊,介紹一下createServer和listen方法,希望對大家有所幫助!

          http 模塊

          使用 Node.js 中創建 Web 服務,主要依賴內置的 http模塊。經典的 express.js、koa.js 框架都是以 http模塊為核心,進行的不同程度的封裝。


          (資料圖片僅供參考)

          創建一個最簡單的 Web 服務只需要幾行代碼。新建一個 index.js文件,輸入以下內容:

          // 1.導入 http 模塊const http = require("http");// 2. 調用 createServer 方法創建服務const server = http.createServer((request, response) => {    // 3.響應給瀏覽器的內容response.end("Hello, World"); });// 4.執行 listen 方法,啟動服務server.listen(3000, () => {    console.log("服務器啟動成功:http://localhost:3000")})

          然后打開命令行工具,使用 node命令執行該文件:

          node index.js

          命令行工具中會打印:

          服務器啟動成功:http://localhost:3000

          之后打開瀏覽器,訪問 http://localhost:3000,就能看到以下內容:

          到這里,只需件簡簡單單的 6 行代碼,就創建了一個 web 服務。【相關教程推薦:nodejs視頻教程、編程教學】

          createServer 方法

          可以看到,創建 Web 服務的核心方法就是 createServer方法。

          它接收一個回調函數,回調參數接收兩個參數,分別是 :

          request 對象:表示 HTTP 請求對象,里面包含了客戶端本次請求攜帶的信息response 對象:表示 HTTP 響應對象,用于向客戶端設置響應的信息

          這個回調函數,就是處理 http 請求,設置 http 響應的主要場所。所以,編寫 web 服務,其實就是在不停的在這個函數中處理請求和響應內容。這也是基于 HTTP 協議本身的請求-響應模型所決定的。當然,實際開發中肯定不能這么雜糅的寫,都是使用框架,那會有很合理的中間件機制和分層。

          listen 方法

          我們都知道,TCP 協議是 HTTP 協議的底層協議,所有 HTTP 請求的數據都是利用 TCP 傳輸的。要發送 HTTP 請求,必須先建立 TCP 連接

          Node 中要創建 HTTP 服務也是如此。createServer方法執行后會創建一個 Server類的實例,該 Server類又繼承自另一個內置模塊 net中的 Server類,它身上有一個 listen方法。下面是相關的類型聲明,可以理解這其中的關系。

          // net 模塊class Server extends EventEmitter {         /**         * 啟動服務器監聽連接。此 Server 可以是 TCP 或 IPC 服務器,具體取決于它所監聽的內容。         */        // 有若干重載,這是最常使用的一種方法        listen(port?: number, hostname?: string, listeningListener?: () => void): this;        listen(port?: number, listeningListener?: () => void): this;}// http 模塊import { Server as NetServer } from "node:net";function createServer<        Request extends typeof IncomingMessage = typeof IncomingMessage,        Response extends typeof ServerResponse = typeof ServerResponse,    >(requestListener?: RequestListener<Request, Response>): Server<Request, Response>;      class Server<        Request extends typeof IncomingMessage = typeof IncomingMessage,        Response extends typeof ServerResponse = typeof ServerResponse,    > extends NetServer {}

          所以通過 createServer方法創建了服務之后,還用再調用 listen方法,用于啟動該服務,監聽連接

          它有多種重載,最常用的一種就是監聽一個端口,在啟動成功后,執行回調函數:

          server.listen(3000, () => {    console.log("服務器啟動成功:http://localhost:3000")})

          如果服務啟動失敗,比如出現端口占用時,控制臺中會直接報錯,就不再執行后面的回調函數了。

          再介紹兩種其他的重載,使用的并不多。

          一種是不指定端口號,此時操作系統會隨機分配一個可用的端口號。在服務啟動成功后,可以通過 server.address().port屬性來獲得分配的端口號:

          server.listen(() => {    const port = server.address().port    console.log(port)    console.log("服務器啟動成功:http://localhost:", port)})

          試一下:

          一種是指定要監聽的主機名

          當不指定 host時,默認為 0.0.0.0(IPv4)或者 ::(IPv6),支持網絡中所有的主機進行訪問

          如果設置為 locolhost或者 127.0.0.1,則只能自己的主機訪問。

          server.listen(3000, "localhost", () => {    console.log("服務器啟動成功:http://localhost:", port)})

          總結

          我們介紹了 http模塊的基本用法,主要使用 createServer來創建服務,再調用 listen方法來啟動服務,監聽連接。createServer接收回調函數用來具體處理某一個請求,編寫 web 服務主要就是利用回調函數的兩個參數 requestresponse,后面會詳細介紹。

          更多node相關知識,請訪問:nodejs 教程!

          以上就是Node http模塊學習:聊聊基本用法的詳細內容,更多請關注php中文網其它相關文章!

          關鍵詞: node HTTP模塊

          亚洲无码日韩精品第一页| 亚洲色少妇熟女11p| 久久精品国产亚洲av日韩| 国产精品亚洲w码日韩中文| 亚洲成AV人在线观看天堂无码| 亚洲国产日韩在线人成下载 | 日韩国产精品亚洲а∨天堂免| 久久青青草原亚洲av无码app | 亚洲91av视频| 亚洲高清中文字幕综合网| 自拍日韩亚洲一区在线| 亚洲毛片不卡av在线播放一区| 日本中文一区二区三区亚洲| 亚洲一区在线视频观看| 亚洲成AV人片在线观看无| 成a人片亚洲日本久久| 亚洲综合色一区二区三区小说| 4338×亚洲全国最大色成网站| 亚洲www在线观看| 精品日韩亚洲AV无码| 亚洲中文字幕在线乱码| 亚洲精品久久无码| 亚洲另类自拍丝袜第1页| 久久亚洲成a人片| 色噜噜AV亚洲色一区二区| 亚洲国产日韩综合久久精品| 亚洲网站在线观看| 亚洲美女又黄又爽在线观看| 精品久久久久久亚洲中文字幕| 亚洲人成影院77777| 亚洲尹人香蕉网在线视颅| 亚洲色成人中文字幕网站| 国产成人亚洲毛片| 日韩亚洲产在线观看| 亚洲精品视频在线观看视频| 午夜亚洲国产理论秋霞| 亚洲国产精品SSS在线观看AV| 亚洲乱码日产精品a级毛片久久| 国产精品亚洲一区二区三区久久| 在线观看日本亚洲一区| 亚洲va精品中文字幕|