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-12NodeJS服務(wù)器實(shí)現(xiàn)gzip壓縮的示例代碼
這篇文章主要介紹了NodeJS服務(wù)器實(shí)現(xiàn)gzip壓縮的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10node實(shí)現(xiàn)生成帶參數(shù)的小程序二維碼并保存到本地功能示例
這篇文章主要介紹了node實(shí)現(xiàn)生成帶參數(shù)的小程序二維碼并保存到本地功能,涉及nodejs模塊引用、接口調(diào)用、編碼轉(zhuǎn)換、圖片生成等相關(guān)操作技巧,需要的朋友可以參考下2018-12-12nodejs中向HTTP響應(yīng)傳送進(jìn)程的輸出
這篇文章主要介紹了nodejs中向HTTP響應(yīng)傳送進(jìn)程的輸出 ,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03Node.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