Node.js 服務(wù)器根據(jù)不同的請求做出不同的響應(yīng)

上一次講到了怎么解決 HTML 顯示亂碼的問題。

這是上次內(nèi)容的鏈接:Node.js 服務(wù)器編碼問題

今天我們添加一個新功能站叼,可以根據(jù)不同的鏈接地址返回不同的頁面響應(yīng)。

啟動上次的代碼澈蟆,代碼如下:

// 創(chuàng)建一個簡單的的 http 服務(wù)器程序

// 加載 http 模塊
var http = require('http');

// 創(chuàng)建 http 服務(wù)對象
var server = http.createServer();

// 監(jiān)聽用戶請求事件( request 事件)
// request 對象包含了用戶請求報文中的所有內(nèi)容 翔忽,通過 request 對象可以獲取所有用戶提交過來后的數(shù)據(jù)
// response 對象用來向用戶響應(yīng)一些數(shù)據(jù),當(dāng)服務(wù)器要向客戶端響應(yīng)數(shù)據(jù)的時候必須使用 response 對象
server.on('request', function (request, response) {

  // 設(shè)置 response 返回數(shù)據(jù)類型與編碼格式铃彰,否則瀏覽器會報錯
  // Content-Type 設(shè)置數(shù)據(jù)類型
  response.setHeader('Content-Type', 'text/plain; charset=utf-8');
  // 向客戶端(瀏覽器)返回數(shù)據(jù)
  response.write('Hello Word绍豁,你好!');
  // 返回數(shù)據(jù)的時候要結(jié)束牙捉,不然就會一直請求
  response.end();
})

// 啟動服務(wù)
server.listen(8080, function () {
  console.log('OK,訪問:localhost:8080');
})

會發(fā)現(xiàn)竹揍,無論在鏈接后面添加什么參數(shù),頁面也總是只顯示 Hello Word,你好邪铲! 芬位。

怎樣才能實現(xiàn)修改地址訪問不同的頁面呢?在監(jiān)聽用戶請求事件中带到,我們有一個參數(shù) request 晶衷。

// 監(jiān)聽用戶請求事件( request 事件)
// request 對象包含了用戶請求報文中的所有內(nèi)容 ,通過 request 對象可以獲取所有用戶提交過來后的數(shù)據(jù)
// response 對象用來向用戶響應(yīng)一些數(shù)據(jù),當(dāng)服務(wù)器要向客戶端響應(yīng)數(shù)據(jù)的時候必須使用 response 對象
server.on('request', function (request, response) {
    ...
})

就是上面代碼中的第一個參數(shù)晌纫,它有一個特別的方法可以得到我們輸入瀏覽器中的地址 --- request.url 税迷。可以通過判斷地址的不同設(shè)置不同的結(jié)果锹漱。

我們先把監(jiān)聽用戶請求事件里面的代碼全部刪掉箭养,寫上新的代碼,如下:

server.on('request', function (request, response) {

  // 設(shè)置 response 返回數(shù)據(jù)類型與編碼格式哥牍,否則瀏覽器會報錯
  // Content-Type 設(shè)置數(shù)據(jù)類型
  response.setHeader('Content-Type', 'text/plain; charset=utf-8');

  // 如果鏈接的路徑是 / 或者 /index 時毕泌,返回的頁面的 index 頁面
  if (request.url === '/' || request.url === '/index') {
    // response.write('這是 index 頁面');
    // response.end();
    // response.end('這是 index 頁面'); 上面兩句的簡寫
    response.end('這是 index 頁面');
  } 
  // 如果鏈接的路徑是 /login 時嗅辣,返回的頁面的 login 頁面
  else if (request.url === '/login') {
    response.end('這是 login 頁面');
  } 
  // 如果鏈接的路徑是 /register 時撼泛,返回的頁面的 register 頁面
  else if (request.url === '/register') {
    response.end('這是 register 頁面');
  } 
   // 如果鏈接的路徑都不是上面定義的路徑,返回 404 沒有此頁面
  else {
    response.end('404,沒有找到此頁面澡谭。');
  }
  
})

這樣我們就可以通過不同的路徑訪問不同的頁面了愿题。

當(dāng)我們訪問 localhost:8080/localhost:8080/index 的時候,是這樣的:

訪問 localhost:8080/login 就會返回 login 頁面:

這是 register 頁面:

沒有找到對應(yīng)的頁面蛙奖,就會返回我們剛剛設(shè)置好的 404 頁面:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末潘酗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子雁仲,更是在濱河造成了極大的恐慌仔夺,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攒砖,死亡現(xiàn)場離奇詭異缸兔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吹艇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門惰蜜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掐暮,你說我怎么就攤上這事≌樱” “怎么了路克?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長养交。 經(jīng)常有香客問我精算,道長,這世上最難降的妖魔是什么碎连? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任灰羽,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘廉嚼。我一直安慰自己玫镐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布怠噪。 她就那樣靜靜地躺著恐似,像睡著了一般。 火紅的嫁衣襯著肌膚如雪傍念。 梳的紋絲不亂的頭發(fā)上矫夷,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音憋槐,去河邊找鬼双藕。 笑死,一個胖子當(dāng)著我的面吹牛阳仔,可吹牛的內(nèi)容都是我干的忧陪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼驳概,長吁一口氣:“原來是場噩夢啊……” “哼赤嚼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起顺又,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤更卒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后稚照,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹂空,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年果录,在試婚紗的時候發(fā)現(xiàn)自己被綠了上枕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡弱恒,死狀恐怖辨萍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情返弹,我是刑警寧澤锈玉,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站义起,受9級特大地震影響拉背,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜默终,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一椅棺、第九天 我趴在偏房一處隱蔽的房頂上張望犁罩。 院中可真熱鬧,春花似錦两疚、人聲如沸床估。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顷窒。三九已至,卻和暖如春源哩,著一層夾襖步出監(jiān)牢的瞬間鞋吉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工励烦, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留谓着,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓坛掠,卻偏偏與公主長得像赊锚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屉栓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理舷蒲,服務(wù)發(fā)現(xiàn),斷路器友多,智...
    卡卡羅2017閱讀 134,707評論 18 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架牲平,建立于...
    Hsinwong閱讀 22,435評論 1 92
  • 22年12月更新:個人網(wǎng)站關(guān)停,如果仍舊對舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,189評論 22 257
  • Nginx 的配置文件使用的就是一門微型的編程語言域滥,許多真實世界里的 Nginx 配置文件其實就是一個一個的小程序...
    SkTj閱讀 4,214評論 0 7
  • 第一天: 永和出發(fā)纵柿,經(jīng)過永和關(guān)大橋,堵車3個多小時启绰,歷經(jīng)顛簸的路面昂儒,看過九曲環(huán)繞的母親河。我們終于到達(dá)陜西延...
    紀(jì)念與記念閱讀 362評論 0 0