Koa.js - Xây dựng URL

Bây giờ chúng ta có thể xác định các tuyến đường; chúng tĩnh hoặc cố định. Để sử dụng các tuyến đường động, chúng ta cần cung cấp các loại tuyến đường khác nhau. Sử dụng các tuyến đường động cho phép chúng tôi chuyển các tham số và xử lý dựa trên chúng. Sau đây là một ví dụ về một tuyến đường động.

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

Để kiểm tra điều này, hãy truy cập https://localhost:3000/123. Bạn sẽ nhận được phản hồi sau.

Bạn có thể thay thế '123' trong URL bằng bất kỳ thứ gì khác và nó sẽ được phản ánh trong phản hồi. Sau đây là một ví dụ phức tạp của điều trên.

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

Để kiểm tra điều này, hãy truy cập https://localhost:3000/things/tutorialspoint/12345.

Bạn có thể dùng this.paramsđối tượng để truy cập tất cả các tham số bạn truyền vào URL. Lưu ý rằng hai đường trên có các đường dẫn khác nhau. Chúng sẽ không bao giờ chồng lên nhau. Ngoài ra, nếu bạn muốn thực thi mã khi nhận được '/ things', thì bạn cần phải xác định nó một cách riêng biệt.

Các tuyến đường phù hợp với mẫu

Bạn cũng có thể sử dụng regex để hạn chế đối sánh thông số URL. Giả sử bạn cần id là số có năm chữ số. Bạn có thể sử dụng định nghĩa tuyến đường sau đây.

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

Lưu ý rằng điều này sẽ onlykhớp với các yêu cầu có id dài 5 chữ số. Bạn có thể sử dụng các regex phức tạp hơn để khớp / xác thực các tuyến đường của mình. Nếu không có tuyến đường nào của bạn phù hợp với yêu cầu, bạn sẽ nhận được thông báo Không tìm thấy dưới dạng phản hồi.

Ví dụ: nếu chúng tôi xác định các tuyến đường tương tự như trên, khi yêu cầu với một URL hợp lệ, chúng tôi nhận được -