
- ExpressJS 教程
- ExpressJS - 首頁
- ExpressJS - 概述
- ExpressJS - 環境
- ExpressJS - Hello World
- ExpressJS - 路由
- ExpressJS - HTTP 方法
- ExpressJS - URL 構建
- ExpressJS - 中介軟體
- ExpressJS - 模板引擎
- ExpressJS - 靜態檔案
- ExpressJS - 表單資料
- ExpressJS - 資料庫
- ExpressJS - Cookie
- ExpressJS - Session
- ExpressJS - 身份驗證
- ExpressJS - RESTful API
- ExpressJS - 腳手架
- ExpressJS - 錯誤處理
- ExpressJS - 除錯
- ExpressJS - 最佳實踐
- ExpressJS - 資源
- ExpressJS 有用資源
- ExpressJS - 快速指南
- ExpressJS - 有用資源
- ExpressJS - 討論
ExpressJS - 路由
Web 框架在不同的路由提供資源,例如 HTML 頁面、指令碼、圖片等。
以下函式用於在 Express 應用程式中定義路由:
app.method(path, handler)
此 METHOD 可以應用於任何一種 HTTP 動詞 – get、set、put、delete。還存在另一種方法,它獨立於請求型別執行。
Path 是請求將執行的路由。
Handler 是一個回撥函式,當在相關路由上找到匹配的請求型別時執行。例如:
var express = require('express'); var app = express(); app.get('/hello', function(req, res){ res.send("Hello World!"); }); app.listen(3000);
如果我們執行應用程式並訪問 **localhost:3000/hello**,伺服器將在路由 **"/hello"** 處接收一個 get 請求,我們的 Express 應用程式將執行附加到此路由的 **回撥** 函式並將 **"Hello World!"** 作為響應傳送。

我們也可以在同一路由上使用多種不同的方法。例如:
var express = require('express'); var app = express(); app.get('/hello', function(req, res){ res.send("Hello World!"); }); app.post('/hello', function(req, res){ res.send("You just called the post method at '/hello'!\n"); }); app.listen(3000);
要測試此請求,請開啟終端並使用 cURL 執行以下請求:
curl -X POST "https://:3000/hello"

Express 提供了一種特殊的方法 all,可以使用相同的函式處理特定路由上的所有型別的 http 方法。要使用此方法,請嘗試以下操作。
app.all('/test', function(req, res){ res.send("HTTP method doesn't have any effect on this route!"); });
此方法通常用於定義中介軟體,我們將在中介軟體章節中討論。
路由器
像上面那樣定義路由很難維護。為了將路由與我們的主 **index.js** 檔案分開,我們將使用 **Express.Router**。建立一個名為 **things.js** 的新檔案,並在其中輸入以下內容。
var express = require('express'); var router = express.Router(); router.get('/', function(req, res){ res.send('GET route on things.'); }); router.post('/', function(req, res){ res.send('POST route on things.'); }); //export this router to use in our index.js module.exports = router;
現在,要在我們的 **index.js** 中使用此路由器,請在 **app.listen** 函式呼叫之前輸入以下內容。
var express = require('Express'); var app = express(); var things = require('./things.js'); //both index.js and things.js should be in same directory app.use('/things', things); app.listen(3000);
在路由 **'/things'** 上的 app.use 函式呼叫將 **things** 路由器附加到此路由。現在,我們的應用程式在 '/things' 處接收到的任何請求都將由我們的 things.js 路由器處理。things.js 中的 **'/'** 路由實際上是 '/things' 的子路由。訪問 localhost:3000/things/,您將看到以下輸出。

路由器非常有助於分離關注點並將相關的程式碼部分放在一起。它們有助於構建可維護的程式碼。您應該將與實體相關的路由定義在單個檔案中,並使用上述方法將其包含在您的 **index.js** 檔案中。