node.js?http模塊概念詳解
node.js-http模塊
服務(wù)器相關(guān)概念什么是 http 模塊。
服務(wù)器相關(guān)概念
IP地址
IP地址:是互聯(lián)網(wǎng)設(shè)備的唯一標(biāo)識(shí)。只有在知道對(duì)方 IP 地址的前提下,才能與對(duì)應(yīng)的電腦之間進(jìn)行數(shù)據(jù)通信。
IPV4:點(diǎn)分十進(jìn)制表示(32位) 192.168.101.15
IPV6:采用冒號(hào)十六進(jìn)制表示(128位) 4A::5B::...
注意
在開發(fā)期間,自己的電腦既是一臺(tái)服務(wù)器,也是一個(gè)客戶端,127.0.0.1 這個(gè)IP 地址就是本機(jī)測(cè)試地址,方便測(cè)試。
域名
域名平時(shí)上網(wǎng)所使用的網(wǎng)址。IP地址與域名是對(duì)應(yīng)的關(guān)系,在瀏覽器的地址欄中輸入域名,會(huì)有專門的服務(wù)器將域名解析為對(duì)應(yīng)的IP地址,從而找到對(duì)應(yīng)的服務(wù)器。
注意
▲ 單純使用 IP 地址,互聯(lián)網(wǎng)中的電腦也能夠正常工作。但是有了域名的加持,能讓互聯(lián)網(wǎng)的世界變得更加方便。
▼ 在開發(fā)測(cè)試期間, 127.0.0.1 對(duì)應(yīng)的域名是 localhost,它們都代表我們自己的這臺(tái)電腦,在使用效果上沒有任何區(qū)別。
端口
Node.js開發(fā)者習(xí)慣使用3000作為Node.js服務(wù)器的端口,一般來說,不使用0到1024之間的數(shù)字,因?yàn)檫@是操作系統(tǒng)軟件,以及常用軟件占用的端口。
注意
▲ 每個(gè)端口號(hào)不能同時(shí)被多個(gè) web 服務(wù)占用。
▼在實(shí)際應(yīng)用中,URL 中的 80 端口可以被省略。
URL
URL又叫統(tǒng)一資源定位符,它是專為標(biāo)識(shí)Internet網(wǎng)上資源位置而設(shè)的一種編址方式。
什么是 http 模塊
http 模塊是 Node.js 官方提供的、用來創(chuàng)建 web 服務(wù)器的模塊。通過 http 模塊提供的http.createServer() 方法,就能方便的把一臺(tái)普通的電腦,變成一臺(tái) Web 服務(wù)器,從而對(duì)外提供 Web 資源服務(wù)。
http模塊的作用
◆在網(wǎng)絡(luò)節(jié)點(diǎn)中,負(fù)責(zé)消費(fèi)資源的電腦,叫做客戶端;負(fù)責(zé)對(duì)外提供網(wǎng)絡(luò)資源的電腦,叫做服務(wù)器。
◆服務(wù)器和普通電腦的 區(qū)別 在于,服務(wù)器上安裝了 web 服務(wù)器軟件,例如:IIS、Apache 等。通過安裝這些服務(wù)器軟件,就能把一臺(tái)普通的電腦變成一臺(tái) web 服務(wù)器。
◆在 Node.js 中,我們不需要使用 IIS、Apache 等這些第三方 web 服務(wù)器軟件。因?yàn)槲覀兛梢曰?Node.js 提供的http 模塊,通過幾行簡(jiǎn)單的代碼,就能輕松的手寫一個(gè)服務(wù)器軟件,從而對(duì)外提供 web 服務(wù)。
創(chuàng)建最基本的web服務(wù)器
創(chuàng)建web 服務(wù)器的步驟
★導(dǎo)入 http 模塊
★ 創(chuàng)建 web 服務(wù)器實(shí)例
★為服務(wù)器實(shí)例綁定 request 事件,監(jiān)聽客戶端的請(qǐng)求
★啟動(dòng)服務(wù)器
//1 - 導(dǎo)入 http 模塊 const http = require('http') //2 - 創(chuàng)建 web 服務(wù)器實(shí)例(調(diào)用 http.createServer() 方法) const server = http.createServer() //3 - 為服務(wù)器實(shí)例綁定 request 事件 server.on('request', (req, res) => { //request事件,只要有客戶端來請(qǐng)求我們自己的服務(wù)器,就會(huì)觸發(fā)request事件,從而調(diào)用這個(gè)函數(shù) console.log('服務(wù)器被訪問') }) //4 - 啟動(dòng)服務(wù)器 (3000是端口, 后面是回調(diào)函數(shù))127.0.0.1 對(duì)應(yīng)的域名是 localhost server.listen(3000, () => { console.log('服務(wù)器運(yùn)行在3000端口,請(qǐng)?jiān)L問http://localhost:3000') })
req請(qǐng)求對(duì)象
request 對(duì)象中常用的有三個(gè)屬性,分別是:req.url req.method req.headers
req.url:客戶端的請(qǐng)求地址。
req.method :客戶端的請(qǐng)求方法。
req.headers:客戶端的請(qǐng)求頭信息。
//1 - 導(dǎo)入 http 模塊 const http = require('http') //2 - 創(chuàng)建 web 服務(wù)器實(shí)例(調(diào)用 http.createServer() 方法) const server = http.createServer() //3 - 為服務(wù)器實(shí)例綁定 request 事件 server.on('request', (req, res) => { //request事件,只要有客戶端來請(qǐng)求我們自己的服務(wù)器,就會(huì)觸發(fā)request事件,從而調(diào)用這個(gè)函數(shù) console.log(req.method); console.log(req.url); console.log(req.headers); console.log('服務(wù)器被訪問') }) //4 - 啟動(dòng)服務(wù)器 (3000是端口, 后面是回調(diào)函數(shù))127.0.0.1 對(duì)應(yīng)的域名是 localhost server.listen(3000, () => { console.log('服務(wù)器運(yùn)行在3000端口,請(qǐng)?jiān)L問http://localhost:3000') })
res 響應(yīng)對(duì)象
在服務(wù)器的 request 事件處理函數(shù)中,如果想訪問與服務(wù)器相關(guān)的數(shù)據(jù) 或?qū)傩???赏ㄟ^res.end()
res.end() 方法的作用: 就是向客戶端發(fā)送指定的內(nèi)容,并且結(jié)束掉此次請(qǐng)求的處理過程。
//1 - 導(dǎo)入 http 模塊 const http = require('http') //2 - 創(chuàng)建 web 服務(wù)器實(shí)例(調(diào)用 http.createServer() 方法) const server = http.createServer() //3 - 為服務(wù)器實(shí)例綁定 request 事件 server.on('request', (req, res) => { //request事件,只要有客戶端來請(qǐng)求我們自己的服務(wù)器,就會(huì)觸發(fā)request事件,從而調(diào)用這個(gè)函數(shù) res.end('Hello word'); }) //4 - 啟動(dòng)服務(wù)器 (3000是端口, 后面是回調(diào)函數(shù))127.0.0.1 對(duì)應(yīng)的域名是 localhost server.listen(3000, () => { console.log('服務(wù)器運(yùn)行在3000端口,請(qǐng)?jiān)L問http://localhost:3000') })
中文亂碼問題
當(dāng)調(diào)用 res.end() 方法,向客戶端發(fā)送中文內(nèi)容的時(shí)候,會(huì)出現(xiàn)亂碼問題,此時(shí),需要手動(dòng)設(shè)置內(nèi)容的編碼格式:res.setHeader('content-Type','text/html; charset=utf-8')
//1 - 導(dǎo)入 http 模塊 const http = require('http') //2 - 創(chuàng)建 web 服務(wù)器實(shí)例(調(diào)用 http.createServer() 方法) const server = http.createServer() //3 - 為服務(wù)器實(shí)例綁定 request 事件 server.on('request', (req, res) => { //request事件,只要有客戶端來請(qǐng)求我們自己的服務(wù)器,就會(huì)觸發(fā)request事件,從而調(diào)用這個(gè)函數(shù) res.setHeader('content-Type','text/html; charset=utf-8') res.end('你好,世界'); }) //4 - 啟動(dòng)服務(wù)器 (3000是端口, 后面是回調(diào)函數(shù))127.0.0.1 對(duì)應(yīng)的域名是 localhost server.listen(3000, () => { console.log('服務(wù)器運(yùn)行在3000端口,請(qǐng)?jiān)L問http://localhost:3000') })
到此這篇關(guān)于node.js http模塊的文章就介紹到這了,更多相關(guān)node.js http模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
簡(jiǎn)單了解node npm cnpm的具體使用方法
這篇文章主要介紹了簡(jiǎn)單了解node npm cnpm的具體使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02解決Mac安裝thrift因bison報(bào)錯(cuò)的問題
今天小編就為大家分享一篇解決Mac安裝thrift因bison報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05Node.js 使用request模塊下載文件的實(shí)例
今天小編就為大家分享一篇Node.js 使用request模塊下載文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09Nodejs使用Mongodb存儲(chǔ)與提供后端CRD服務(wù)詳解
這篇文章主要給大家介紹了關(guān)于Nodejs使用Mongodb存儲(chǔ)與提供后端CRD服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09Node.js學(xué)習(xí)教程之HTTP/2服務(wù)器推送【譯】
這篇文章主要給大家介紹了關(guān)于Node.js學(xué)習(xí)教程之HTTP/2服務(wù)器推送的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10nodejs模塊nodemailer基本使用-郵件發(fā)送示例(支持附件)
本篇文章主要介紹了nodejs模塊nodemailer基本使用-郵件發(fā)送示例(支持附件),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03