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/輸出結果如下: