node中http模塊的使用及執(zhí)行流程
在node中http有什么作用
http這個模塊的職責(zé)就是幫你創(chuàng)建編寫服務(wù)器
執(zhí)行流程
1. 加載http模塊
const http = require('http')
2. 使用http.createServer方法創(chuàng)建一個web服務(wù)器 返回一個server實(shí)例
const server = http.createServer()
3.提供對數(shù)據(jù)的服務(wù)
發(fā)請求
接受請求
處理請求
返回(發(fā)送響應(yīng))
注冊request請求事件,當(dāng)客戶端請求過來就會自動觸發(fā)request請求事件然后就會執(zhí)行第二個參數(shù)執(zhí)行回調(diào)函數(shù)
server.on('request',function(){
console.log('收到客戶端的請求了')
})
4.綁定端口號,啟動服務(wù)器
server.listen(3000,()=> {
console.log("服務(wù)器啟動成功了,可以通過http://127.0.0.1:3000/來訪問了")
})
5. node app.js啟動成功
打開瀏覽器復(fù)制粘貼http://127.0.0.1:3000/就會發(fā)現(xiàn)瀏覽器一直在轉(zhuǎn)圈(此時已經(jīng)與瀏覽器建立了鏈接),同時終端返回收到客戶端的請求了,關(guān)閉終端ctrl+c則會終止瀏覽器服務(wù)((瀏覽器就不轉(zhuǎn)圈了,終止連接了))
搭建一個基本的web服務(wù)器請求
代碼如下:
const http = require('http')
const server = http.createServer()
// request請求事件處理函數(shù)需要接收倆個參數(shù)
// request請求對象
// 請求對象可以獲取客戶端的一些請求信息,例如請求路徑
// response響應(yīng)對象
// 響應(yīng)對象可以用來給客戶端發(fā)送響應(yīng)消息
server.on('request',function(request,response){
console.log('收到客戶端的請求了','請求路徑是:'+request.url)
// response對象有一個方法,write可以用來給客戶端發(fā)送響應(yīng)數(shù)據(jù)
// write可以使用多次,但是最后一次一定要用end來結(jié)束響應(yīng),否則客戶端會一直等待
response.write("hello ")
response.write("nodejs")
response.end()
//告訴客戶端我的話說完了你可以給用戶看了
//由于現(xiàn)在我們的服務(wù)器能力很弱,無論是什么請求都只能響應(yīng)hello nodejs
// 怎么做到請求不同的路徑響應(yīng)不同的結(jié)果
})
server.listen(3000,()=> {
console.log("服務(wù)器啟動成功了,可以通過http://127.0.0.1:3000/")
})
接下來就是編寫一個基本的接口數(shù)據(jù)用來請求
判斷在不同的頁面顯示不同的數(shù)據(jù)
首頁數(shù)據(jù)

a頁面數(shù)據(jù)
…與首頁不同的數(shù)據(jù)
const http = require("http")
const server = http.createServer()
server.on('request',function(req,res){
res.writeHead(200,{'Content-Type':'text/plain;charset=utf-8'})
console.log("收到請求了,請求路徑是:"+req.url)
// res.write("heel")
// res.write("world")
// res.end()
// 上面的方式比較麻煩
//可以使用end的時候發(fā)送響應(yīng)
// 根據(jù)不同的請求路徑發(fā)送不同的請求結(jié)果
//1. 獲取請求的路徑
// req.url獲取到的是端口號之后的路徑
// 也就是說所有的url都是以/開頭的
//2. 判斷路徑處理響應(yīng)
const url = req.url
if(url=="/"){
const project = [
{
name:"蘋果",
price:"18",
},
{
name:"香蕉",
price:"28",
},
{
name:"西瓜",
price:"20",
},
{
name:"xxx",
price:"100",
},
{
name:"aaa",
price:"100",
}
]
// 響應(yīng)數(shù)據(jù)只能是二進(jìn)制數(shù)據(jù)或者是字符串
// 響應(yīng)數(shù)據(jù)如果是以下的則不行:數(shù)字對象數(shù)組布爾值
res.end(JSON.stringify(project))
}else if(url=='/a'){
const a = [
{
name:"蘋果",
price:"aa",
},
{
name:"香蕉",
price:"ww",
},
{
name:"西瓜",
price:"vv",
},
{
name:"wjcx",
price:"bb",
},
{
name:"wdwa",
price:"ww",
}
]
res.end(JSON.stringify(a))
}
})
server.listen(3000,function(){
console.log("服務(wù)器啟動成功,可以訪問啦!http://127.0.0.1:3000/")
})
到此這篇關(guān)于node中http模塊的使用的文章就介紹到這了,更多相關(guān)node http模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nodejs中Express 常用中間件 body-parser 實(shí)現(xiàn)解析
這篇文章主要介紹了Nodejs中Express 常用中間件 body-parser 實(shí)現(xiàn)解析,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
Node.js操作mysql數(shù)據(jù)庫增刪改查
這篇文章主要介紹使用Node.js操作mysql數(shù)據(jù)庫增刪改查的相關(guān)資料,需要的朋友可以參考下2016-03-03
no-vnc和node.js實(shí)現(xiàn)web遠(yuǎn)程桌面的完整步驟
這篇文章主要給大家介紹了關(guān)于no-vnc和node.js實(shí)現(xiàn)web遠(yuǎn)程桌面的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
使用DNode實(shí)現(xiàn)php和nodejs之間通信的簡單實(shí)例
這篇文章主要介紹了使用DNode實(shí)現(xiàn)php和nodejs之間通信的簡單實(shí)例,本文講解了DNode的安裝,以及使用的它的步驟和方法,需要的朋友可以參考下2015-07-07
用node和express連接mysql實(shí)現(xiàn)登錄注冊的實(shí)現(xiàn)代碼
本篇文章主要介紹了用node和express連接mysql實(shí)現(xiàn)登錄注冊的實(shí)現(xiàn)代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07
MQTT Client實(shí)現(xiàn)消息推送功能的方法詳解
這篇文章主要介紹了MQTT Client實(shí)現(xiàn)消息推送功能的方法,結(jié)合實(shí)例形式詳細(xì)分析了MQTT Client實(shí)現(xiàn)消息推送的基本原理、實(shí)現(xiàn)方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2023-05-05
node.js調(diào)用腳本(python/shell)和系統(tǒng)命令
這篇文章介紹了node.js調(diào)用腳本(python/shell)和系統(tǒng)命令的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07

