成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Nodehttp模塊基本使用方法是什么

這篇文章主要介紹了Node http模塊基本使用方法是什么的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Node http模塊基本使用方法是什么文章都會有所收獲,下面我們一起來看看吧。

目前創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、東莞網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

http 模塊

使用 Node.js 中創(chuàng)建 Web 服務(wù),主要依賴內(nèi)置的 http 模塊。經(jīng)典的 express.js、koa.js 框架都是以 http 模塊為核心,進行的不同程度的封裝。

創(chuàng)建一個最簡單的 Web 服務(wù)只需要幾行代碼。新建一個 index.js 文件,輸入以下內(nèi)容:

// 1.導(dǎo)入 http 模塊
const http = require('http');

// 2. 調(diào)用 createServer 方法創(chuàng)建服務(wù)
const server = http.createServer((request, response) => {
    // 3.響應(yīng)給瀏覽器的內(nèi)容
	response.end('Hello, World'); 
});

// 4.執(zhí)行 listen 方法,啟動服務(wù)
server.listen(3000, () => {
    console.log('服務(wù)器啟動成功:http://localhost:3000')
})

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

node index.js

命令行工具中會打印:

服務(wù)器啟動成功:http://localhost:3000

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

Node http模塊基本使用方法是什么

到這里,只需件簡簡單單的 6 行代碼,就創(chuàng)建了一個 web 服務(wù)。

createServer 方法

可以看到,創(chuàng)建 Web 服務(wù)的核心方法就是 createServer 方法。

它接收一個回調(diào)函數(shù),回調(diào)參數(shù)接收兩個參數(shù),分別是 :

  • request 對象:表示 HTTP 請求對象,里面包含了客戶端本次請求攜帶的信息

  • response 對象:表示 HTTP 響應(yīng)對象,用于向客戶端設(shè)置響應(yīng)的信息

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

listen 方法

我們都知道,TCP 協(xié)議是 HTTP 協(xié)議的底層協(xié)議,所有 HTTP 請求的數(shù)據(jù)都是利用 TCP 傳輸?shù)摹?strong>要發(fā)送 HTTP 請求,必須先建立 TCP 連接。

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

// net 模塊

class Server extends EventEmitter {
 
        /**
         * 啟動服務(wù)器監(jiān)聽連接。此 Server 可以是 TCP 或 IPC 服務(wù)器,具體取決于它所監(jiān)聽的內(nèi)容。
         */
        // 有若干重載,這是最常使用的一種方法
        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 方法創(chuàng)建了服務(wù)之后,還用再調(diào)用 listen 方法,用于啟動該服務(wù),監(jiān)聽連接。

它有多種重載,最常用的一種就是監(jiān)聽一個端口,在啟動成功后,執(zhí)行回調(diào)函數(shù):

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

如果服務(wù)啟動失敗,比如出現(xiàn)端口占用時,控制臺中會直接報錯,就不再執(zhí)行后面的回調(diào)函數(shù)了。

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

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

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

試一下:

Node http模塊基本使用方法是什么

一種是指定要監(jiān)聽的主機名

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

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

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

關(guān)于“Node http模塊基本使用方法是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Node http模塊基本使用方法是什么”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁題目:Nodehttp模塊基本使用方法是什么
URL網(wǎng)址:http://jinyejixie.com/article38/gggesp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT移動網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作、建站公司網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
三明市| 淮南市| 长宁区| 揭阳市| 沁源县| 乌海市| 榆林市| 绥德县| 浮梁县| 璧山县| 静宁县| 普兰店市| 清苑县| 凉城县| 南宫市| 清苑县| 精河县| 维西| 宜川县| 济源市| 淮安市| 界首市| 靖安县| 阿拉善左旗| 泰安市| 清徐县| 凤山县| 西丰县| 沙洋县| 旬阳县| 磴口县| 舒城县| 新津县| 秀山| 澄迈县| 甘肃省| 城步| 临邑县| 遂平县| 望江县| 四平市|