Учебники

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: // localhost: 3000/123 . Вы получите следующий ответ.

URL Building ID

Вы можете заменить «123» в URL-адресе на что-либо еще, и это будет отражено в ответе. Ниже приведен сложный пример вышесказанного.

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: // localhost: 3000 / things / tutorialspoint / 12345 .

URL Строительный Комплекс

Вы можете использовать объект this.params для доступа ко всем параметрам, которые вы передаете в URL. Обратите внимание, что вышеупомянутые два имеют разные пути. Они никогда не будут пересекаться. Также, если вы хотите выполнить код, когда получите «/ вещи», вам нужно определить его отдельно.

Маршруты, соответствующие шаблону

Вы также можете использовать регулярное выражение для ограничения соответствия параметров URL. Допустим, вам нужен идентификатор, состоящий из пяти цифр. Вы можете использовать следующее определение маршрута.

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);

Обратите внимание, что это будет соответствовать только запросам, которые имеют 5-значный длинный идентификатор. Вы можете использовать более сложные регулярные выражения для сопоставления / проверки ваших маршрутов. Если ни один из ваших маршрутов не соответствует запросу, вы получите сообщение Не найдено в качестве ответа.

Например, если мы определяем те же маршруты, что и выше, при запросе с действительным URL, мы получаем —