ExpressJS - Định tuyến

Các khuôn khổ web cung cấp các tài nguyên như trang HTML, tập lệnh, hình ảnh, v.v. theo các tuyến khác nhau.

Hàm sau được sử dụng để xác định các tuyến đường trong ứng dụng Express:

app.method (đường dẫn, trình xử lý)

Phương pháp này có thể được áp dụng cho bất kỳ một trong các động từ HTTP - get, set, put, delete. Một phương thức thay thế cũng tồn tại, thực thi độc lập với kiểu yêu cầu.

Đường dẫn là tuyến đường mà yêu cầu sẽ chạy.

Xử lý là một hàm gọi lại thực thi khi một loại yêu cầu phù hợp được tìm thấy trên tuyến liên quan. Ví dụ,

var express = require('express');
var app = express();

app.get('/hello', function(req, res){
   res.send("Hello World!");
});

app.listen(3000);

Nếu chúng tôi chạy ứng dụng của mình và đi đến localhost:3000/hello, máy chủ nhận được một yêu cầu tại tuyến đường "/hello", ứng dụng Express của chúng tôi thực thi callback chức năng gắn liền với tuyến đường này và gửi "Hello World!" như phản hồi.

Chúng tôi cũng có thể có nhiều phương pháp khác nhau trên cùng một tuyến đường. Ví dụ,

var express = require('express');
var app = express();

app.get('/hello', function(req, res){
   res.send("Hello World!");
});

app.post('/hello', function(req, res){
   res.send("You just called the post method at '/hello'!\n");
});

app.listen(3000);

Để kiểm tra yêu cầu này, hãy mở thiết bị đầu cuối của bạn và sử dụng cURL để thực hiện yêu cầu sau:

curl -X POST "http://localhost:3000/hello"

Một phương pháp đặc biệt, all, được cung cấp bởi Express để xử lý tất cả các loại phương thức http tại một tuyến đường cụ thể bằng cách sử dụng cùng một chức năng. Để sử dụng phương pháp này, hãy thử cách sau.

app.all('/test', function(req, res){
   res.send("HTTP method doesn't have any effect on this route!");
});

Phương pháp này thường được sử dụng để xác định phần mềm trung gian, mà chúng ta sẽ thảo luận trong chương phần mềm trung gian.

Bộ định tuyến

Xác định các tuyến đường như trên là rất tẻ nhạt để duy trì. Để tách các tuyến đường khỏi chính của chúng tôiindex.js tập tin, chúng tôi sẽ sử dụng Express.Router. Tạo một tệp mới có tênthings.js và nhập nội dung sau vào đó.

var express = require('express');
var router = express.Router();

router.get('/', function(req, res){
   res.send('GET route on things.');
});
router.post('/', function(req, res){
   res.send('POST route on things.');
});

//export this router to use in our index.js
module.exports = router;

Bây giờ để sử dụng bộ định tuyến này trong index.js, nhập nội dung sau trước app.listen chức năng gọi.

var express = require('Express');
var app = express();

var things = require('./things.js');

//both index.js and things.js should be in same directory
app.use('/things', things);

app.listen(3000);

Các app.use chức năng cuộc gọi trên tuyến đường '/things' đính kèm thingsbộ định tuyến với tuyến đường này. Giờ đây, bất kỳ yêu cầu nào mà ứng dụng của chúng tôi nhận được tại '/ things' sẽ được bộ định tuyến things.js của chúng tôi xử lý. Các'/'route in things.js thực sự là một tuyến con của '/ things'. Truy cập localhost: 3000 / things / và bạn sẽ thấy kết quả sau.

Bộ định tuyến rất hữu ích trong việc tách các mối quan tâm và giữ các phần có liên quan trong mã của chúng ta lại với nhau. Họ giúp xây dựng mã có thể bảo trì. Bạn nên xác định các tuyến đường của mình liên quan đến một thực thể trong một tệp duy nhất và bao gồm nó bằng cách sử dụng phương pháp trên trongindex.js tập tin.