Koa.js - construção de URL

Agora podemos definir rotas; eles são estáticos ou fixos. Para usar rotas dinâmicas, precisamos fornecer diferentes tipos de rotas. O uso de rotas dinâmicas nos permite passar parâmetros e processar com base neles. A seguir está um exemplo de uma rota dinâmica.

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

Para testar isso vá para https://localhost:3000/123. Você obterá a seguinte resposta.

Você pode substituir '123' no URL por qualquer outra coisa e isso será refletido na resposta. A seguir está um exemplo complexo do acima.

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

Para testar isso vá para https://localhost:3000/things/tutorialspoint/12345.

Você pode usar o this.paramsobjeto para acessar todos os parâmetros que você passa na URL. Observe que os dois acima têm caminhos diferentes. Eles nunca se sobreporão. Além disso, se você quiser executar o código ao obter '/ things', precisará defini-lo separadamente.

Rotas com correspondência de padrão

Você também pode usar regex para restringir a correspondência de parâmetro de URL. Digamos que você precise que o id tenha um número de cinco dígitos. Você pode usar a seguinte definição de rota.

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

Observe que isso vai onlycorresponder às solicitações que têm um id de 5 dígitos. Você pode usar regexes mais complexas para corresponder / validar suas rotas. Se nenhuma de suas rotas corresponder à solicitação, você receberá uma mensagem Não encontrado como resposta.

Por exemplo, se definirmos as mesmas rotas acima, ao solicitar um URL válido, obtemos -