首頁 >web前端 >js教程 >nodejs之請求路由概述_node.js

nodejs之請求路由概述_node.js

WBOY
WBOY原創
2016-05-16 16:42:241712瀏覽

通常來說對於不同的URL請求,伺服器應該有不同的反應。我們要為路由提供請求的URL和其他需要的GET及POST參數,隨後路由需要根據這些資料來執行對應的程式碼。我們需要的所有資料都會包含在request物件中,該物件作為onRequest()回呼函數的第一個參數傳遞。為了解析這些數據,需要呼叫額外的模組,分別是url和querystring模組。
 
URL:This
 module has utilities for URL resolution and parsing. Call require('url') to
 use it.
 
Parsed URL objects have some or all of the following fields, depending on whether or not they exist in the URL string. Any parts that are not in the URL string will not be in the parsed object. Examples fors string will not be in the parsed object. Examples fors.  
'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
 
href: The full URL that was originally parsed. Both the protocol and host are lowercased.
Example: 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
 
protocol: The request protocol, lowercased.
Example: 'http:'
 
host: The full lowercased host portion of the URL, including port information.
Example: 'host.com:8080'
 
auth: The authentication information portion of a URL.
Example: 'user:pass'
 
hostname: Just the lowercased hostname portion of the host.
Example: 'host.com'
 
port: The port number portion of the host.
Example: '8080'
 
pathname: The path section of the URL, that comes after the host and before the query, including the initial slash if present.
例: '/p/a/t/h'
 
search: The 'query string' portion of the URL, including the leading question mark.
Example: '?query=string'
 
path: Concatenation of pathname and search.
Example: '/p/a/t/h?query=string'
 
query: Either the 'params' portion of the query string, or a querystring-parsed object.
Example: 'query=string' 或 {'query':'string'}
 
hash: The 'fragment' portion of the URL including the pound-sign.
Example: '#hash'
 
我們將使用依賴注入的方式較鬆散地新增路由模組。作為路由目標的函數稱為請求處理程序,請求處理函數的實作需要建立一個叫做requestHandlers的模組,當然也可以命名為其他。並且對於每一個請求處理程序,添加一個佔位用函數,隨後將這些函數作為模組的方法導出,這樣就可以將請求處理程序和路由模組連接起來,讓路由有路可循。
 
特別指出的是,這裡需要將一系列請求處理程序透過一個物件來傳遞,並且需要使用鬆散耦合的方式將這個物件注入到route()函數中。

我們可以用從關聯數組中獲取元素一樣的方式從傳遞的對像中獲取請求處理函數,因此就有了簡潔流暢的形如handle[pathname]();的表達式。程式碼如下圖所示:


var handle = {}
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn