1. 程式人生 > >Node.js 第十一章- 路由

Node.js 第十一章- 路由

一,我們要為路由提供請求的URL和其他需要的GET以及POST引數,隨後路由需要根據這些資料執行相應的程式碼。

因此,我們需要檢視HTTP請求,從中提取出請求的URL以及GET/POST引數。

我們需要的所有資料都會包含在request物件中,該物件作為onRequest()回撥函式的第一個引數傳遞。

但是為了解析這些資料,我們需要額外的Node.js模組,他們分別是url和querystring模組。

 

以下,我們用onRequest()函式加上一些邏輯,用來找出瀏覽器請求的URL路徑。

 以上,我們的應用現在可以通過請求的URL路徑來區別不同的請求了。

這使得我們得以使用路由(還未完成)來將請求以URL路徑為基準對映到處理程式上。

在我們所要構建的應用中,這意味著來自/start和/upload的請求可以使用不同的程式碼來處理。

稍後,我們將看到的這些內容是如何整合到一起的。

現在我們來編寫路由。建立一個router.js的檔案。

如上,這段程式碼什麼都沒有幹。在新增更多的邏輯以前,我們先看看如何把路由和伺服器整合起來。

我們的伺服器應當知道路由的存在並加以有效利用。

如果我們使用硬編碼的方式將這依賴繫結到伺服器上,但是其他語言的程式設計經驗告訴我們,這是一件痛苦的事。

因此,我們將使用依賴注入的方式較鬆散的新增路由模組。

 

首先,我們來擴充套件下伺服器的start()函式,以便將路由函式作為引數傳遞過去,luyou.js檔案程式碼如下:

 

同時,我們會相應擴充套件luyouIndex.js 使得路由函式可以被注入到伺服器中:

 

在這裡,我們傳遞的函式依舊什麼都沒做。

如果現在啟動程式,node luyouIndex.js ,隨後去請求一個URL,你將會看到應用輸出對應的資訊,

這表明我們的HTTP伺服器已經在使用路由模組了。並會將請求的路徑傳遞給路由:

 

例子:

瀏覽器訪問http://127.0.0.1:8888/輸出結果如下: