ExpressJS - Xây dựng URL
Bây giờ chúng ta có thể xác định các tuyến đường, nhưng chúng là tĩnh hoặc cố định. Để sử dụng các tuyến đường động, chúng tôi NÊ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.
Đây là một ví dụ về một tuyến đường động -
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);
Để kiểm tra điều này, hãy truy cập http://localhost:3000/123. Phản hồi sau sẽ được hiển thị.
Bạn có thể thay thế '123' trong URL bằng bất kỳ thứ gì khác và thay đổi sẽ phản ánh trong phản hồi. Một ví dụ phức tạp hơn ở trên là -
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);
Để kiểm tra mã trên, hãy truy cập http://localhost:3000/things/tutorialspoint/12345.
Bạn có thể dùng req.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 2 đường dẫn trên là 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 bạn nhận được'/things' thì bạn cần 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ể dùng regexđể hạn chế đối sánh thông số URL. Hãy để chúng tôi giả sử bạn cầnidlà một số dài có 5 chữ số. Bạn có thể sử dụng định nghĩa tuyến đường sau:
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);
Lưu ý rằng điều này sẽ only khớp các yêu cầu có độ dài 5 chữ số id. 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"Cannot GET <your-request-route>"tin nhắn như một phản hồi. Thông báo này được thay thế bằng trang 404 không tìm thấy bằng cách sử dụng tuyến đường đơn giản này -
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);
Important - Điều này nên được đặt sau tất cả các tuyến đường của bạn, vì Express khớp với các tuyến đường từ đầu đến cuối của index.js tệp, bao gồm các bộ định tuyến bên ngoài mà bạn yêu cầu.
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ệ, kết quả sau sẽ được hiển thị. -
Trong khi yêu cầu URL không chính xác, kết quả sau được hiển thị.