首頁  >  文章  >  web前端  >  輕鬆創建nodejs伺服器(4):路由

輕鬆創建nodejs伺服器(4):路由

PHPz
PHPz原創
2016-05-16 16:25:511256瀏覽

伺服器需要根據不同的URL或請求來執行不一樣的操作,我們可以透過路由來實現這個步驟。

第一步我們需要先解析出請求URL的路徑,我們引入url模組。

我們來為onRequest()函數加上一些邏輯,用來找出瀏覽器請求的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;好了,pathname就是请求的路径,我们可以用它来区别不同请求了,这样一来我们就可以对来自/start和/upload的请求使用不同的代码来处理。

接著我們來寫路由,建立一個名為router. js的文件,程式碼如下:

function route(pathname) {
 console.log("About to route a request for " + pathname);
}
exports.route = route;

這段程式碼什麼都沒乾,我們先把路由和伺服器整合起來。

我們接著擴充伺服器的start()函數,在start()中運行路由函數,並將pathname作為參數傳給它。

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;

同時,我們會相應擴展index.js,使得路由函數可以被注入到伺服器中:

var server = require("./server");
var router = require("./router");
server.start(router.route);

運行index.js,隨便訪問個路徑,例如/ upload,就會發現控制台輸出,About to route a request for /upload.

這就表示我們的HTTP伺服器和請求路由模組已經可以互相交流了。

以上就是本章的全部內容,更多相關教學請訪問Node.js影片教學

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