node中http模塊的使用及執(zhí)行流程
在node中http有什么作用
http這個(gè)模塊的職責(zé)就是幫你創(chuàng)建編寫服務(wù)器
執(zhí)行流程
1. 加載http模塊
const http = require('http')
2. 使用http.createServer方法創(chuàng)建一個(gè)web服務(wù)器 返回一個(gè)server實(shí)例
const server = http.createServer()
3.提供對(duì)數(shù)據(jù)的服務(wù)
發(fā)請(qǐng)求
接受請(qǐng)求
處理請(qǐng)求
返回(發(fā)送響應(yīng))
注冊(cè)request請(qǐng)求事件,當(dāng)客戶端請(qǐng)求過來就會(huì)自動(dòng)觸發(fā)request請(qǐng)求事件然后就會(huì)執(zhí)行第二個(gè)參數(shù)執(zhí)行回調(diào)函數(shù)
server.on('request',function(){
console.log('收到客戶端的請(qǐng)求了')
})
4.綁定端口號(hào),啟動(dòng)服務(wù)器
server.listen(3000,()=> {
console.log("服務(wù)器啟動(dòng)成功了,可以通過http://127.0.0.1:3000/來訪問了")
})
5. node app.js啟動(dòng)成功
打開瀏覽器復(fù)制粘貼http://127.0.0.1:3000/就會(huì)發(fā)現(xiàn)瀏覽器一直在轉(zhuǎn)圈(此時(shí)已經(jīng)與瀏覽器建立了鏈接),同時(shí)終端返回收到客戶端的請(qǐng)求了,關(guān)閉終端ctrl+c則會(huì)終止瀏覽器服務(wù)((瀏覽器就不轉(zhuǎn)圈了,終止連接了))
搭建一個(gè)基本的web服務(wù)器請(qǐng)求
代碼如下:
const http = require('http')
const server = http.createServer()
// request請(qǐng)求事件處理函數(shù)需要接收倆個(gè)參數(shù)
// request請(qǐng)求對(duì)象
// 請(qǐng)求對(duì)象可以獲取客戶端的一些請(qǐng)求信息,例如請(qǐng)求路徑
// response響應(yīng)對(duì)象
// 響應(yīng)對(duì)象可以用來給客戶端發(fā)送響應(yīng)消息
server.on('request',function(request,response){
console.log('收到客戶端的請(qǐng)求了','請(qǐng)求路徑是:'+request.url)
// response對(duì)象有一個(gè)方法,write可以用來給客戶端發(fā)送響應(yīng)數(shù)據(jù)
// write可以使用多次,但是最后一次一定要用end來結(jié)束響應(yīng),否則客戶端會(huì)一直等待
response.write("hello ")
response.write("nodejs")
response.end()
//告訴客戶端我的話說完了你可以給用戶看了
//由于現(xiàn)在我們的服務(wù)器能力很弱,無論是什么請(qǐng)求都只能響應(yīng)hello nodejs
// 怎么做到請(qǐng)求不同的路徑響應(yīng)不同的結(jié)果
})
server.listen(3000,()=> {
console.log("服務(wù)器啟動(dòng)成功了,可以通過http://127.0.0.1:3000/")
})
接下來就是編寫一個(gè)基本的接口數(shù)據(jù)用來請(qǐng)求
判斷在不同的頁面顯示不同的數(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("收到請(qǐng)求了,請(qǐng)求路徑是:"+req.url)
// res.write("heel")
// res.write("world")
// res.end()
// 上面的方式比較麻煩
//可以使用end的時(shí)候發(fā)送響應(yīng)
// 根據(jù)不同的請(qǐng)求路徑發(fā)送不同的請(qǐng)求結(jié)果
//1. 獲取請(qǐng)求的路徑
// req.url獲取到的是端口號(hào)之后的路徑
// 也就是說所有的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ù)字對(duì)象數(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ù)器啟動(dòng)成功,可以訪問啦!http://127.0.0.1:3000/")
})
到此這篇關(guān)于node中http模塊的使用的文章就介紹到這了,更多相關(guān)node http模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node.js express JWT token生成與校驗(yàn)的實(shí)現(xiàn)
本文主要介紹了node.js express JWT token生成與校驗(yàn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12
寶塔部署nodejs項(xiàng)目的實(shí)戰(zhàn)步驟
前段時(shí)間部署node項(xiàng)目的時(shí)候出現(xiàn)了一點(diǎn)問題,所以想著給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于寶塔部署nodejs項(xiàng)目的實(shí)戰(zhàn)步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
NodeJS服務(wù)器實(shí)現(xiàn)gzip壓縮的示例代碼
這篇文章主要介紹了NodeJS服務(wù)器實(shí)現(xiàn)gzip壓縮的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
node實(shí)現(xiàn)生成帶參數(shù)的小程序二維碼并保存到本地功能示例
這篇文章主要介紹了node實(shí)現(xiàn)生成帶參數(shù)的小程序二維碼并保存到本地功能,涉及nodejs模塊引用、接口調(diào)用、編碼轉(zhuǎn)換、圖片生成等相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
nodejs中向HTTP響應(yīng)傳送進(jìn)程的輸出
這篇文章主要介紹了nodejs中向HTTP響應(yīng)傳送進(jìn)程的輸出 ,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
Node.js模擬發(fā)起http請(qǐng)求從異步轉(zhuǎn)同步的5種用法
這篇文章主要介紹了Node.js模擬發(fā)起http請(qǐng)求從異步轉(zhuǎn)同步的5種方法,下面總結(jié)了幾個(gè)常見的庫 API 從異步轉(zhuǎn)同步的幾種方法。需要的朋友可以參考下2018-09-09

