溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Node.js中的http模塊是什么及怎么使用

發(fā)布時(shí)間:2023-01-06 09:38:23 來(lái)源:億速云 閱讀:90 作者:iii 欄目:web開(kāi)發(fā)

本篇內(nèi)容介紹了“Node.js中的http模塊是什么及怎么使用”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1、什么是http

在百度百科的解釋?zhuān)?/p>

超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)是一個(gè)簡(jiǎn)單的請(qǐng)求-響應(yīng)協(xié)議,它通常運(yùn)行在TCP之上。它指定了客戶(hù)端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。請(qǐng)求和響應(yīng)消息的頭以ASCII形式給出;而 [9]  消息內(nèi)容則具有一個(gè)類(lèi)似MIME的格式。這個(gè)簡(jiǎn)單模型是早期Web成功的有功之臣,因?yàn)樗归_(kāi)發(fā)和部署非常地直截了當(dāng)。

1.1、網(wǎng)絡(luò)通信協(xié)議

在2022年的今天,計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)成為了人們?nèi)粘I畹谋匦杵罚瑹o(wú)論是郵件、與朋友聊天的即時(shí)通訊、短視頻娛樂(lè)·······可以說(shuō),我們通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)可以使得多臺(tái)計(jì)算機(jī)實(shí)現(xiàn)連接。

計(jì)算機(jī)網(wǎng)絡(luò)通過(guò)傳輸介質(zhì)、通訊設(shè)施、和網(wǎng)絡(luò)通信協(xié)議,把在一個(gè)網(wǎng)絡(luò)下的多個(gè)計(jì)算機(jī)設(shè)備連接起來(lái),實(shí)現(xiàn)了資源共享和數(shù)據(jù)傳輸。

但是在同一個(gè)網(wǎng)絡(luò)的計(jì)算機(jī)進(jìn)行連接和通訊的時(shí)候,必要遵守一定的規(guī)則,在計(jì)算機(jī)網(wǎng)絡(luò)中,這些連接和通信的規(guī)則叫做網(wǎng)絡(luò)通信協(xié)議:

Node.js中的http模塊是什么及怎么使用

我們這里講到的http協(xié)議就是基于 tcp實(shí)現(xiàn)的。常見(jiàn)的http應(yīng)用場(chǎng)景就是 你在瀏覽器輸入一串地址,然后返回過(guò)來(lái)一個(gè)網(wǎng)頁(yè)。

1.2、IP地址和端口號(hào)

要想使得網(wǎng)絡(luò)中的計(jì)算機(jī)能夠進(jìn)行通信,還必須為每臺(tái)計(jì)算機(jī)指定一個(gè)標(biāo)識(shí)號(hào),通過(guò)這個(gè)標(biāo)識(shí)號(hào)來(lái)指定接收數(shù)據(jù)的計(jì)算機(jī) 或者 指定發(fā)送數(shù)據(jù)的計(jì)算機(jī)。

查看自己的電腦在局域網(wǎng)的ip地址在windows電腦中按WIN+R鍵盤(pán) 輸入cmd快速進(jìn)入控制臺(tái)

ipconfig

Node.js中的http模塊是什么及怎么使用

通過(guò)IP地址可以連接到指定的計(jì)算機(jī),但如果想訪問(wèn)目標(biāo)計(jì)算機(jī)中你的某個(gè)應(yīng)用程序,還需要指定端口號(hào)。

例如MySQL的3306、TomCat的8080

2、使用http模塊創(chuàng)建服務(wù)器

Node.js 提供了 http 模塊,http 模塊主要用于搭建 HTTP 服務(wù)端和客戶(hù)端,使用 HTTP 服務(wù)器或客戶(hù)端功能必須調(diào)用 http 模塊。

2.1、厚積

流程簡(jiǎn)介:

  • 先用createServer()方法 注冊(cè)server對(duì)象,

  • 然后用這個(gè)server對(duì)象 去調(diào)用on()方法監(jiān)聽(tīng)處理事件,

  • 調(diào)用listen()方法去綁定端口號(hào)

開(kāi)始淺嘗:

任何網(wǎng)絡(luò)服務(wù)應(yīng)用程序總是要先創(chuàng)建一個(gè)服務(wù)對(duì)象。在nodeJS中我們可以使用createServer方法來(lái)實(shí)現(xiàn),

// 首先導(dǎo)入http模塊
const http = require('http'); 
// 創(chuàng)建http服務(wù)對(duì)象
const server = http.createServer();

由 createServer 構(gòu)造函數(shù)返回的 Server對(duì)象是一個(gè)事件發(fā)射器,在這里用創(chuàng)建好的的server對(duì)象 利用他自帶的on()方法對(duì)它進(jìn)行事件監(jiān)聽(tīng)處理。這樣,每當(dāng)有http請(qǐng)求發(fā)送過(guò)來(lái),我們就可以進(jìn)行處理了。

// 首先導(dǎo)入http模塊
const http = require('http'); 
// 創(chuàng)建http服務(wù)對(duì)象
const server = http.createServer();
// 綁定事件監(jiān)聽(tīng)
server.on('request', (request, response) => { 
// 永遠(yuǎn)相信美好的事情即將發(fā)生! 
});

我們前面介紹過(guò)(IP地址+端口),其中IP地址在我們計(jì)算機(jī)聯(lián)網(wǎng)的時(shí)候,路由器就會(huì)自動(dòng)DHCP分配給我們,但要想訪問(wèn)計(jì)算機(jī)上指定的程序還必須有端口號(hào)。

為了訪問(wèn)計(jì)算機(jī)上的指定程序,我們還要用到listen()方法。你只需要用server.listen()把端口號(hào)作為參數(shù)傳入 listen 方法中,作為監(jiān)聽(tīng)端口即可。

// 首先導(dǎo)入http模塊
const http = require('http'); 
// 創(chuàng)建http服務(wù)對(duì)象
const server = http.createServer();
// 綁定事件監(jiān)聽(tīng)
server.on('request', (req, res) => {  
// 此函數(shù)內(nèi)容只是小小調(diào)用一下res參數(shù)讓程序更加易懂的跑起來(lái)
    // 編寫(xiě)響應(yīng)頭(不寫(xiě)瀏覽器不識(shí)別)
    res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
    // 發(fā)送響應(yīng)數(shù)據(jù)
    res.end("<h2>歡迎使用node.js搭建服務(wù)</h2>"); 
});
// 綁定端口號(hào)
server.listen(8888);

// 控制臺(tái)打印地址,方便快速調(diào)試
console.log('您的http服務(wù)啟動(dòng)在  http://127.0.0.1:8888/');

代碼運(yùn)行演示:

Node.js中的http模塊是什么及怎么使用

上述代碼演示十分細(xì)節(jié),但是實(shí)際開(kāi)發(fā)起來(lái),不建議這樣一步步寫(xiě),過(guò)于繁瑣了

接下來(lái)讓我們繼續(xù)優(yōu)化一下代碼,讓代碼更加牛逼且簡(jiǎn)潔

2.2、薄發(fā)

一步一步注冊(cè)對(duì)象,調(diào)各種方法的流程太過(guò)繁瑣,這里我們用小而美的做法,一步踏天,實(shí)現(xiàn)一個(gè)http接口:

const http = require('http'); 
const server = http.createServer(function(req,res){ 
  // 永遠(yuǎn)相信美好的事情即將發(fā)生
}).listen(8080);

每當(dāng)有 HTTP 請(qǐng)求到達(dá)服務(wù)器時(shí),createServer 中傳入的函數(shù)就被自動(dòng)執(zhí)行。所以這個(gè)函數(shù)也被稱(chēng)為是請(qǐng)求處理函數(shù)。我們可以直接在里面?zhèn)魅胧录O(jiān)聽(tīng)的回調(diào)函數(shù),然后后面點(diǎn)上listen()方法,直接綁定端口號(hào)。

但是這樣還不夠好,是的,還可以更好,把上面回調(diào)函數(shù)用箭頭函數(shù)修飾一下,更加美觀。

const http = require('http'); 
const server = http.createServer((req,res) => { 
  // 永遠(yuǎn)相信美好的事情即將發(fā)生
}).listen(8080);

當(dāng)然還不夠好,還可以更好!

直接一個(gè)createServer()解決一切:

var http = require('http')

// 創(chuàng)建服務(wù)器
http.createServer( (req, res) =>{  
    // 永遠(yuǎn)相信美好的事情即將發(fā)送
 }).listen(8888);

“Node.js中的http模塊是什么及怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI