Koa.js - URL構建



現在我們可以定義路由了;它們是靜態的或固定的。要使用動態路由,我們需要提供不同型別的路由。使用動態路由允許我們傳遞引數並根據引數進行處理。以下是一個動態路由的示例。

var koa = require('koa');
var router = require('koa-router');
var app = koa();

var _ = router();

_.get('/:id', sendID);

function *sendID() {
   this.body = 'The id you specified is ' + this.params.id;
}

app.use(_.routes());
app.listen(3000);

要測試它,請訪問https://:3000/123。您將收到以下響應。

URL Building ID

您可以將URL中的“123”替換為任何其他內容,它都會反映在響應中。以下是上述內容的複雜示例。

var koa = require('koa');
var router = require('koa-router');
var app = koa();

var _ = router();

_.get('/things/:name/:id', sendIdAndName);

function *sendIdAndName(){
   this.body = 'id: ' + this.params.id + ' and name: ' + this.params.name;
};

app.use(_.routes());

app.listen(3000);

要測試它,請訪問https://:3000/things/tutorialspoint/12345

URL Building Complex

您可以使用this.params物件訪問您在URL中傳遞的所有引數。請注意,以上兩者具有不同的路徑。它們永遠不會重疊。此外,如果您想在獲得“/things”時執行程式碼,則需要單獨定義它。

模式匹配路由

您還可以使用正則表示式來限制URL引數匹配。假設您需要id為五位數。您可以使用以下路由定義。

var koa = require('koa');
var router = require('koa-router');
var app = koa();

var _ = router();

_.get('/things/:id([0-9]{5})', sendID);

function *sendID(){
   this.body = 'id: ' + this.params.id;
}

app.use(_.routes());
app.listen(3000);

請注意,這將匹配具有五位數id的請求。您可以使用更復雜的正則表示式來匹配/驗證您的路由。如果您的任何路由都不匹配請求,您將收到“未找到”訊息作為響應。

例如,如果我們定義與上述相同的路由,則在使用有效URL請求時,我們將得到:

URL Matching Correct
廣告