Node.js使用http模塊實(shí)現(xiàn)后臺(tái)服務(wù)器流程解析
客戶端與服務(wù)器
客戶端 : 在網(wǎng)絡(luò)節(jié)點(diǎn)中,負(fù)責(zé)消費(fèi)資源的電腦,叫做客戶端,例如:在網(wǎng)絡(luò)中你用客戶端與服務(wù)器建立連接,服務(wù)器提供的服務(wù)信息通過(guò)你的客戶端給你展示出來(lái)。
服務(wù)器 : 負(fù)責(zé)對(duì)外提供網(wǎng)絡(luò)資源的電腦,叫做服務(wù)器。例如:我們?cè)谠L問(wèn)搜索網(wǎng)站時(shí),是誰(shuí)給你提供你想搜索的資源呢?這個(gè)東西就是服務(wù)器,服務(wù)器給你提供你需要的資源! 服務(wù)器和普通電腦的區(qū)別在于:服務(wù)器上安裝了web服務(wù)軟件。例如:Apache等,通過(guò)安裝這些服務(wù)器軟件,就可以把一臺(tái)普通的電腦變成一臺(tái)web服務(wù)器
IP地址
IP 地址就是互聯(lián)網(wǎng)上每臺(tái)計(jì)算機(jī)的唯一地址,因此 IP 地址具有唯一性。如果把“個(gè)人電腦”比作“一臺(tái)電話”,那么“IP地址”就相當(dāng)于“電話號(hào)碼”,只有在知道對(duì)方 IP 地址的前提下,才能與對(duì)應(yīng)的電腦之間進(jìn)行數(shù)據(jù)通信。
IP 地址的格式:通常用“點(diǎn)分十進(jìn)制”表示成(a.b.c.d)的形式,其中,a,b,c,d 都是 0~255 之間的十進(jìn)制整數(shù)。例如:用點(diǎn)分十進(jìn)表示的 IP地址(192.168.1.1)
注意 :
- 互聯(lián)網(wǎng)中每臺(tái) Web 服務(wù)器,都有自己的 IP 地址。
- 在開(kāi)發(fā)期間,自己的電腦既是一臺(tái)服務(wù)器,也是一個(gè)客戶端,為了方便測(cè)試,可以在自己的瀏覽器中輸入127.0.0.1 這個(gè) IP 地址,就能把自己的電腦當(dāng)做一臺(tái)服務(wù)器進(jìn)行訪問(wèn)了。
域名和域名服務(wù)器
盡管 IP 地址能夠唯一地標(biāo)記網(wǎng)絡(luò)上的計(jì)算機(jī),但I(xiàn)P地址是一長(zhǎng)串?dāng)?shù)字,不直觀,而且不便于記憶,于是人們又發(fā)明了另一套字符型的地址方案,即所謂的域名(Domain Name)地址。
域名服務(wù)器:IP地址和域名是一一對(duì)應(yīng)的關(guān)系,這份對(duì)應(yīng)關(guān)系存放在一種叫做域名服務(wù)器(DNS,Domain name server)的電腦中。使用者只需通過(guò)好記的域名訪問(wèn)對(duì)應(yīng)的服務(wù)器即可,對(duì)應(yīng)的轉(zhuǎn)換工作由域名服務(wù)器實(shí)現(xiàn)。因此,域名服務(wù)器就是提供 IP 地址和域名之間的轉(zhuǎn)換服務(wù)的服務(wù)器。
注意:
- 單純使用 IP 地址,互聯(lián)網(wǎng)中的電腦也能夠正常工作。但是有了域名的加持,能讓互聯(lián)網(wǎng)的世界變得更加方便。 在開(kāi)發(fā)測(cè)試期間
- 127.0.0.1 對(duì)應(yīng)的域名是 localhost,它們都代表我們自己的這臺(tái)電腦,在使用效果上沒(méi)有任何區(qū)別。
端口號(hào)
計(jì)算機(jī)中的端口號(hào),就好像是現(xiàn)實(shí)生活中的門牌號(hào)一樣。通過(guò)門牌號(hào),外賣小哥可以在整棟大樓眾多的房間中,準(zhǔn)確把外賣送到你的手中。
同樣的道理,在一臺(tái)電腦中,可以運(yùn)行成百上千個(gè) web 服務(wù)。每個(gè) web 服務(wù)都對(duì)應(yīng)一個(gè)唯一的端口號(hào)??蛻舳税l(fā)送過(guò)來(lái)的網(wǎng)絡(luò)請(qǐng)求,通過(guò)端口號(hào),可以被準(zhǔn)確地交給對(duì)應(yīng)的 web 服務(wù)進(jìn)行處理。

注意:
??每個(gè)端口號(hào)不能同時(shí)被多個(gè) web 服務(wù)占用。
??在實(shí)際應(yīng)用中,URL 中的 80 端口可以被省略(80就是默認(rèn)的端口號(hào))。
什么是http模塊
http 模塊是 Node.js 官方提供的、用來(lái)創(chuàng)建 web 服務(wù)器的模塊。通過(guò) http 模塊提供的 http.createServer() 方法,就能方便的把一臺(tái)普通的電腦,變成一臺(tái) Web 服務(wù)器,從而對(duì)外提供 Web 資源服務(wù)。
在 Node.js 中,我們不需要使用 Apache 等這些第三方 web 服務(wù)器軟件。因?yàn)槲覀兛梢曰?Node.js 提供的 http 模塊,通過(guò)幾行簡(jiǎn)單的代碼,就能輕松的手寫一個(gè)服務(wù)器軟件,從而對(duì)外提供 web 服務(wù)。
創(chuàng)建基本的web服務(wù)器
創(chuàng)建web服務(wù)器有四個(gè)步驟:
1. 導(dǎo)入我們的http模塊
2. 創(chuàng)建web服務(wù)器實(shí)例(http.createServer())
3. 為服務(wù)器實(shí)例綁定request事件,監(jiān)聽(tīng)客戶端的請(qǐng)求(server.on())
4. 啟動(dòng)服務(wù)器(server.listen())
// 1.導(dǎo)入http模塊
const http = require('http');
//2.創(chuàng)建一個(gè)web服務(wù)器實(shí)例
const server = http.createServer()
// 3. 為服務(wù)器實(shí)例綁定 request 事件,監(jiān)聽(tīng)客戶端的請(qǐng)求
server.on('request',function(req,res) {
//req.url 是客戶端請(qǐng)求的 url 地址
const url = req.url
req.method 是客戶端請(qǐng)求的method類型
const method = req.method
const str = `你請(qǐng)求的url地址是 ${url}, 請(qǐng)求的method類型是 ${method}`
console.log(str)
// 設(shè)置 Content-Type 響應(yīng)頭,解決中文亂碼的問(wèn)題
res.setHeader('Content-Type', 'text/html; charset=utf-8')
// 向客戶端響應(yīng)內(nèi)容
res.end(str)
})
// 4.啟動(dòng)服務(wù)器
server.listen(80,()=>{
console.log('服務(wù)啟動(dòng)了..... http://127.0.0.1:80');
})只要服務(wù)器接收到了客戶端的請(qǐng)求,就會(huì)調(diào)用通過(guò) server.on() 為服務(wù)器綁定的 request 事件處理函數(shù)。
- req是請(qǐng)求對(duì)象,包含了客戶端相關(guān)的屬性和數(shù)據(jù),如果想在事件處理函數(shù)中,訪問(wèn)與客戶端相關(guān)的數(shù)據(jù)或?qū)傩?例如:可以使用req.url,req.method,分別來(lái)判斷客戶端請(qǐng)求的url地址和發(fā)送請(qǐng)求的方法!
- res是響應(yīng)對(duì)象,包含了服務(wù)器相關(guān)的屬性和數(shù)據(jù),在服務(wù)器的 request 事件處理函數(shù)中,如果想訪問(wèn)與服務(wù)器相關(guān)的數(shù)據(jù)或?qū)傩?,例?: 可以使用res.end()進(jìn)行在頁(yè)面的簡(jiǎn)單渲染。
- 我們還需要設(shè)置一下響應(yīng)頭,為了避免中文亂碼的情況
小結(jié)
node.js的一個(gè)最大的好處在于我們不用依靠于第三方web服務(wù)器軟件,我們僅僅通過(guò)幾行代碼就可以創(chuàng)建我們的后臺(tái)服務(wù)器了,方便我們的開(kāi)發(fā),而node.js參與的項(xiàng)目中http模塊是一定會(huì)使用到的,我們需要依靠的接口與http模塊息息相關(guān)。
學(xué)好http模塊,就意味著我們正式進(jìn)入全棧的道路咯!
到此這篇關(guān)于Node.js使用http模塊實(shí)現(xiàn)后臺(tái)服務(wù)器流程解析的文章就介紹到這了,更多相關(guān)Node.js http模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Node.js?搭建后端服務(wù)器內(nèi)置模塊(?http+url+querystring?的使用)
- Node.js基礎(chǔ)入門之path模塊,url模塊,http模塊使用詳解
- 基于Node.js的http模塊搭建HTTP服務(wù)器
- node.js使用http模塊創(chuàng)建服務(wù)器和客戶端完整示例
- Node.js進(jìn)階之核心模塊https入門
- node.js中http模塊和url模塊的簡(jiǎn)單介紹
- node.js 核心http模塊,起一個(gè)服務(wù)器,返回一個(gè)頁(yè)面的實(shí)例
- Node.js中Request模塊處理HTTP協(xié)議請(qǐng)求的基本使用教程
- Node.js 中 http 模塊的深度剖析與實(shí)戰(zhàn)應(yīng)用小結(jié)
相關(guān)文章
簡(jiǎn)單實(shí)現(xiàn)nodejs上傳功能
這篇文章主要為大家詳細(xì)介紹了如何簡(jiǎn)單實(shí)現(xiàn)nodejs上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
手寫簡(jiǎn)版無(wú)三方依賴的Node-Server實(shí)現(xiàn)示例
這篇文章主要為大家介紹了手寫簡(jiǎn)版無(wú)三方依賴的Node-Server實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

