ExpressJS - Phần mềm trung gian
Các chức năng phần mềm trung gian là các chức năng có quyền truy cập vào request object (req), các response object (res)và chức năng phần mềm trung gian tiếp theo trong chu trình phản hồi yêu cầu của ứng dụng. Các chức năng này được sử dụng để sửa đổireq và res các đối tượng cho các tác vụ như phân tích cú pháp nội dung yêu cầu, thêm tiêu đề phản hồi, v.v.
Đây là một ví dụ đơn giản về chức năng phần mềm trung gian đang hoạt động:
var express = require('express');
var app = express();
//Simple request time logger
app.use(function(req, res, next){
console.log("A new request received at " + Date.now());
//This function call is very important. It tells that more processing is
//required for the current request and is in the next middleware
function/route handler.
next();
});
app.listen(3000);
Phần mềm trung gian ở trên được gọi cho mọi yêu cầu trên máy chủ. Vì vậy, sau mỗi yêu cầu, chúng tôi sẽ nhận được thông báo sau trong bảng điều khiển -
A new request received at 1467267512545
Để hạn chế nó trong một tuyến cụ thể (và tất cả các tuyến con của nó), hãy cung cấp tuyến đó làm đối số đầu tiên của app.use(). Ví dụ,
var express = require('express');
var app = express();
//Middleware function to log request protocol
app.use('/things', function(req, res, next){
console.log("A request for things received at " + Date.now());
next();
});
// Route handler that sends the response
app.get('/things', function(req, res){
res.send('Things');
});
app.listen(3000);
Bây giờ bất cứ khi nào bạn yêu cầu bất kỳ tuyến con nào của '/ things', chỉ khi đó nó sẽ ghi lại thời gian.
Thứ tự cuộc gọi phần mềm trung gian
Một trong những điều quan trọng nhất về phần mềm trung gian trong Express là thứ tự mà chúng được viết / đưa vào tệp của bạn; thứ tự mà chúng được thực hiện, với điều kiện là các tuyến đường phù hợp cũng cần được xem xét.
Ví dụ: trong đoạn mã sau, hàm đầu tiên thực thi đầu tiên, sau đó là trình xử lý định tuyến và sau đó là hàm kết thúc. Ví dụ này tóm tắt cách sử dụng phần mềm trung gian trước và sau trình xử lý tuyến đường; cũng như cách một trình xử lý tuyến đường có thể được sử dụng như một phần mềm trung gian.
var express = require('express');
var app = express();
//First middleware before response is sent
app.use(function(req, res, next){
console.log("Start");
next();
});
//Route handler
app.get('/', function(req, res, next){
res.send("Middle");
next();
});
app.use('/', function(req, res){
console.log('End');
});
app.listen(3000);
Khi chúng tôi truy cập '/' sau khi chạy mã này, chúng tôi nhận được phản hồi là Middle và trên bảng điều khiển của chúng tôi -
Start
End
Sơ đồ sau đây tóm tắt những gì chúng ta đã học được về phần mềm trung gian -
Bây giờ chúng ta đã trình bày về cách tạo phần mềm trung gian của riêng mình, chúng ta hãy thảo luận về một số phần mềm trung gian được cộng đồng tạo ra phổ biến nhất.
Phần mềm trung gian của bên thứ ba
Danh sách phần mềm trung gian của bên thứ ba cho Express có sẵn tại đây . Sau đây là một số phần mềm trung gian được sử dụng phổ biến nhất; chúng ta cũng sẽ học cách sử dụng / gắn kết những -
phân tích cú pháp cơ thể
Điều này được sử dụng để phân tích cú pháp nội dung của các yêu cầu có tải trọng được đính kèm với chúng. Để gắn trình phân tích cú pháp cơ thể, chúng ta cần cài đặt nó bằng cách sử dụngnpm install - lưu body-parser và để gắn nó, hãy bao gồm các dòng sau trong index.js của bạn -
var bodyParser = require('body-parser');
//To parse URL encoded data
app.use(bodyParser.urlencoded({ extended: false }))
//To parse json data
app.use(bodyParser.json())
Để xem tất cả các tùy chọn có sẵn cho body-parser, hãy truy cập trang github của nó.
cookie-parser
Nó phân tích cú pháp tiêu đề Cookie và điền req.cookies với một đối tượng được khóa bằng tên cookie. Để gắn kết trình phân tích cú pháp cookie, chúng tôi cần cài đặt nó bằng cách sử dụng npm install - lưu cookie-parser và để gắn kết nó, hãy bao gồm các dòng sau trong index.js của bạn -
var cookieParser = require('cookie-parser');
app.use(cookieParser())
phiên cấp tốc
Nó tạo ra một phần mềm trung gian phiên với các tùy chọn nhất định. Chúng ta sẽ thảo luận về cách sử dụng của nó trong phần Phiên.
Chúng tôi có nhiều phần mềm trung gian của bên thứ ba khác trong ExpressJS. Tuy nhiên, chúng tôi chỉ thảo luận một số vấn đề quan trọng ở đây.