http 模塊 、方法

http模塊

  • http模塊是Node的內(nèi)置模塊瓦戚。
  • http模塊用于構(gòu)建服務(wù)器。

http.createServer()

定義
用于創(chuàng)建一個Node服務(wù)器摸吠。主要做了兩件事:

  • 處理請求
  • 處理響應(yīng)

語法

http.createServer({選項對象},監(jiān)聽函數(shù))

選項對象:可選空凸。是一個object,通過選項對象,傳入一些參數(shù)寸痢。

監(jiān)聽函數(shù):是一個回調(diào)函數(shù)呀洲。當用戶請求從端口進來后,該函數(shù)立刻被調(diào)用啼止。

  • Request對象:請求對象
    • 請求對象:包含與請求有關(guān)信息道逗。
  • Response對象:響應(yīng)對象
    • 響應(yīng)對象:包含與響應(yīng)有關(guān)的信息。

返回值:
createServer() 方法返回一個Server對象献烦。

server.listen()

定義
用于監(jiān)聽服務(wù)器端口滓窍。

語法

server.listen()
server.listen([port[,host][,callback])
server.listen(端口,主機名,回調(diào)函數(shù))
  • 端口: 數(shù)值
  • 主機名:字符串
  • 連接數(shù):數(shù)值(最大511)
  • 回調(diào)函數(shù):function

返回值:
返回服務(wù)器對象

res.setHeader()

定義
用于設(shè)置響應(yīng)頭信息。特點:

  • 只能設(shè)置一個值
  • 多次執(zhí)行
  • 優(yōu)先級低于res.writeHead()

語法

res.setHeader(name, value)
res.setHeader(響應(yīng)頭屬性名, 對應(yīng)的值)

返回值:

res.setHeader("Content-Type","text/html")
res.setHeader("Content-Type","text/plain")
res.setHeader("Content-Type", "application/json")

res.write()

定義
write()方法用于設(shè)置響應(yīng)數(shù)據(jù)巩那。

語法

response.write(chunk[, encoding][, callback]);
response.write(數(shù)據(jù)[,字符編碼][, 回調(diào)函數(shù)]);

返回值:
布爾值

res.writeHead()

定義
用于設(shè)置響應(yīng)頭信息吏夯。特點:

  • 設(shè)置多個值
  • 只能執(zhí)行一次
  • 優(yōu)先級高于res.setHeader()

語法

res.writeHead(statusCode[, statusMessage][, headers]);
res.writeHead(狀態(tài)碼,'狀態(tài)信息',{響應(yīng)頭});

返回值:
返回一個響應(yīng)對象。以便進行鏈式調(diào)用即横。

res.end()

定義
end()用于通知服務(wù)器響應(yīng)結(jié)束锦亦。該方法在響應(yīng)時必須調(diào)用。

語法

response.end([data[, encoding]][, callback])
res.end('數(shù)據(jù)','字符編碼',回調(diào)函數(shù))

返回值:
返回this

讀取文件內(nèi)容

const http = require('node:http')
const fs = require('fs')

const server = http.createServer((req,res) => {
    // console.log(res);//響應(yīng)對象[ServerResponse]
    // console.log(req);//請求對象[inComingMessage]
    console.log(req.url);
    //設(shè)置響應(yīng)頭的數(shù)據(jù)類型
    // res.setHeader('Content-Type', 'text/html;charset=utf-8')
    // res.write('<h1>你好世界</h1>')
    // res.write('<h2>你好中國</h2>')
    // res.end()

    //讀取index.html內(nèi)容作為響應(yīng)數(shù)據(jù)
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
    fs.readFile('./views/index.html',(err,data) => {  
        if(err){
            console.log(err);
            res.end()
        } else {
            res.end(data)//把數(shù)據(jù)寫在這里
        }
    })
    
})

server.listen(3000,'localhost',511,() => {
    console.log('服務(wù)器已經(jīng)運行在http://localhost:3000');
})

添加路由

const http = require('node:http')
const fs = require('fs')

const server = http.createServer((req,res) => {
    console.log(req.url);
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
  //添加路由
    //條件判斷 path  = './views/index.html'
     
    // fs.readFile('./views/index.html',(err,data) => {
    // fs.readFile('./views/about.html',(err,data) => {
    fs.readFile('./views/404.html',(err,data) => {
        if(err){
            console.log(err);
            res.end()
        } else {
            res.end(data)//把數(shù)據(jù)寫在這里
        }
    })
    
})

server.listen(3000,'localhost',511,() => {
    console.log('服務(wù)器已經(jīng)運行在http://localhost:3000');
})

node.js路由的原生寫法

const http = require('node:http')
const fs = require('fs')

const server = http.createServer((req, res) => {
    console.log(req.url);
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
    //////////////添加路由:router/////////////////
    //條件判斷 path  = './views/index.html'
    let path = './views/'
    switch (req.url) {
        case '/':
            path += 'index.html'
            res.statusCode = 200
            break
        case '/about':
            path += 'about.html'
            res.statusCode = 200
            break
        case '/about-me':
            res.setHeader('Location', '/about')
            res.statusCode = 301
            break
        default:
            path += '404.html'
            res.statusCode = 404
    }
    // fs.readFile('./views/index.html',(err,data) => {
    // fs.readFile('./views/about.html',(err,data) => {
    fs.readFile(path, (err, data) => {
        if (err) {
            console.log(err);
            res.end()
        } else {
            res.end(data)//把數(shù)據(jù)寫在這里
        }
    })

})

server.listen(3000, 'localhost', 511, () => {
    console.log('服務(wù)器已經(jīng)運行在http://localhost:3000');
})

Npm install

語法

npm install module-name
npm install -g module-name # -g:全局安裝
npm i module-name  # npm i是npm install的別名
npm install module-name --save
npm install module-name --not--save
npm install module-name --save-dev

express寫路由

const express = require('express')
const app = express()

app.get('/', function (req, res) {
    // res.send('Hello World')
    res.sendFile('./views/index.html',{root:__dirname})
})
app.get('/about', function (req, res) {
    res.sendFile('./views/about.html',{root:__dirname})
})
app.get('/about-me', function (req, res) {
    res.redirect('/about')
})

//404 page
app.use((req,res) => {
    res.status(404).sendFile('./views/404.html',{root:__dirname})
})

app.listen(3000)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末令境,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子顾瞪,更是在濱河造成了極大的恐慌舔庶,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陈醒,死亡現(xiàn)場離奇詭異惕橙,居然都是意外死亡,警方通過查閱死者的電腦和手機钉跷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門弥鹦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人爷辙,你說我怎么就攤上這事彬坏。” “怎么了膝晾?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵栓始,是天一觀的道長。 經(jīng)常有香客問我血当,道長幻赚,這世上最難降的妖魔是什么禀忆? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮落恼,結(jié)果婚禮上箩退,老公的妹妹穿的比我還像新娘。我一直安慰自己佳谦,他們只是感情好戴涝,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吠昭,像睡著了一般喊括。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上矢棚,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天郑什,我揣著相機與錄音,去河邊找鬼蒲肋。 笑死蘑拯,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的兜粘。 我是一名探鬼主播申窘,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼孔轴!你這毒婦竟也來了剃法?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤路鹰,失蹤者是張志新(化名)和其女友劉穎贷洲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晋柱,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡优构,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了雁竞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钦椭。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖碑诉,靈堂內(nèi)的尸體忽然破棺而出彪腔,到底是詐尸還是另有隱情,我是刑警寧澤进栽,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布漫仆,位于F島的核電站,受9級特大地震影響泪幌,放射性物質(zhì)發(fā)生泄漏盲厌。R本人自食惡果不足惜署照,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吗浩。 院中可真熱鬧建芙,春花似錦、人聲如沸懂扼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阀湿。三九已至赶熟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陷嘴,已是汗流浹背映砖。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灾挨,地道東北人邑退。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像劳澄,于是被迫代替她去往敵國和親地技。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容