
- 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 - URL構建
我們現在可以定義路由了,但是這些路由是靜態的或固定的。要使用動態路由,我們應該提供不同型別的路由。使用動態路由允許我們傳遞引數並基於這些引數進行處理。
這是一個動態路由的示例:
var express = require('express'); var app = express(); app.get('/:id', function(req, res){ res.send('The id you specified is ' + req.params.id); }); app.listen(3000);
要測試這個,請訪問 **https://:3000/123**。將顯示以下響應。

您可以將 URL 中的“123”替換為任何其他內容,並且更改將反映在響應中。上面一個更復雜的例子是:
var express = require('express'); var app = express(); app.get('/things/:name/:id', function(req, res) { res.send('id: ' + req.params.id + ' and name: ' + req.params.name); }); app.listen(3000);
要測試上述程式碼,請訪問 **https://:3000/things/tutorialspoint/12345**。

您可以使用`**req.params**`物件訪問您在 url 中傳遞的所有引數。請注意,以上兩個是不同的路徑。它們永遠不會重疊。如果您想在獲得“/things”時執行程式碼,則需要單獨定義它。
模式匹配路由
您還可以使用**正則表示式 (regex)** 來限制 URL 引數匹配。假設您需要`id`是一個 5 位長的數字。您可以使用以下路由定義:
var express = require('express'); var app = express(); app.get('/things/:id([0-9]{5})', function(req, res){ res.send('id: ' + req.params.id); }); app.listen(3000);
請注意,這**只**會匹配具有 5 位長`id`的請求。您可以使用更復雜的正則表示式來匹配/驗證您的路由。如果您的任何路由都不匹配請求,您將收到`**"Cannot GET
var express = require('express'); var app = express(); //Other routes here app.get('*', function(req, res){ res.send('Sorry, this is an invalid URL.'); }); app.listen(3000);
**重要** - 這應該放在所有路由之後,因為 Express 從`**index.js**`檔案的開頭匹配到結尾的路由,包括您需要的外部路由器。
例如,如果我們定義與上述相同的路由,在使用有效的 URL 請求時,將顯示以下輸出:

而對於不正確的 URL 請求,將顯示以下輸出:

廣告