我們需要的所有數(shù)據(jù)都會(huì)包含在 request 對(duì)象中,該對(duì)象作為 onRequest() 回調(diào)函數(shù)的第一個(gè)參數(shù)傳遞勉抓。但是為了解析這些數(shù)據(jù),我們需要額外的 Node.JS 模塊是趴,它們分別是 url 和 querystring 模塊谣殊。
找出瀏覽器請(qǐng)求的 URL 路徑
var http = require("http");
var url = require("url");
function start() {
? function onRequest(request, response) {
? ? var pathname = url.parse(request.url).pathname;
? ? console.log("Request for " + pathname + " received.");
? ? response.writeHead(200, {"Content-Type": "text/plain"});
? ? response.write("Hello World");
? ? response.end();
? }
? http.createServer(onRequest).listen(8888);
? console.log("Server has started.");
}
exports.start = start;
在我們所要構(gòu)建的應(yīng)用中,這意味著來(lái)自 /start 和 /upload 的請(qǐng)求可以使用不同的代碼來(lái)處理紊馏。稍后我們將看到這些內(nèi)容是如何整合到一起的料饥。
現(xiàn)在我們可以來(lái)編寫(xiě)路由了,建立一個(gè)名為 router.js 的文件朱监,添加以下內(nèi)容:
router.js 文件代碼:
function route(pathname) {
? console.log("About to route a request for " + pathname);
}
exports.route = route;
在添加更多的邏輯以前岸啡,我們先來(lái)看看如何把路由和服務(wù)器整合起來(lái)。
server.js 文件代碼:
var http = require("http");
var url = require("url");
function start(route) {
? function onRequest(request, response) {
? ? var pathname = url.parse(request.url).pathname;
? ? console.log("Request for " + pathname + " received.");
? ? route(pathname);
? ? response.writeHead(200, {"Content-Type": "text/plain"});
? ? response.write("Hello World");
? ? response.end();
? }
? http.createServer(onRequest).listen(8888);
? console.log("Server has started.");
}
exports.start = start;
同時(shí)赫编,我們會(huì)相應(yīng)擴(kuò)展 index.js巡蘸,使得路由函數(shù)可以被注入到服務(wù)器中:
index.js 文件代碼:
var server = require("./server");
var router = require("./router");
server.start(router.route);