2012-06-14 53 views
16

Trong nhanh, tôi đã xác định một số tuyếnLàm thế nào để ngăn chặn Node.js yêu cầu nhanh

app.post("/api/v1/client", Client.create); 
app.get("/api/v1/client", Client.get); 
... 

tôi đã xác định làm thế nào để xử lý yêu cầu trong một bộ điều khiển Client. Có cách nào mà tôi có thể làm một số tiền xử lý cho các yêu cầu, trước khi xử lý chúng trong bộ điều khiển của tôi? Tôi đặc biệt muốn kiểm tra xem người gọi API có được phép truy cập tuyến đường hay không, sử dụng khái niệm về các cấp truy cập. Lời khuyên nào sẽ được đánh giá cao.

+0

Hãy suy nghĩ về kết nối/thể hiện như một người đấm bóp với nhiều tay, mỗi bàn tay là một phần mềm trung gian để xoa bóp yêu cầu của bạn vào câu trả lời chính xác. Vì vậy, những gì Ryan Olds nói là chính xác 100%. ;) – Pickels

Trả lời

39

Bạn có thể làm những gì bạn cần theo một vài cách.

Điều này sẽ đặt một phần mềm trung gian sẽ được sử dụng trước khi chạm vào bộ định tuyến. Đảm bảo rằng bộ định tuyến được thêm vào với app.use() sau. Thứ tự Middleware là quan trọng.

app.use(function(req, res, next) { 
    // Put some preprocessing here. 
    next(); 
}); 
app.use(app.router); 

Bạn cũng có thể sử dụng phần mềm trung gian của tuyến đường.

var someFunction = function(req, res, next) { 
    // Put the preprocessing here. 
    next(); 
}; 
app.post("/api/v1/client", someFunction, Client.create); 

Điều này sẽ thực hiện bước tiền xử lý cho tuyến đường đó.

Lưu ý: Đảm bảo yêu cầu gọi app.use() của bạn trước định nghĩa tuyến đường. Việc xác định một tuyến đường sẽ tự động thêm ứng dụng vào chuỗi phần mềm trung gian, có thể đặt nó trước phần mềm trung gian do người dùng xác định.

+0

Cảm ơn bạn rất nhiều, đây là một câu trả lời tuyệt vời! –

+0

Đẹp! Cảm ơn, Ryan – luigi7up

+0

@ ryan-olds, Làm cách nào để kiểm tra 'Loại nội dung'? Tôi phải đặt hết hạn trên JSON, không phải trong tất cả các phản ứng. –

Các vấn đề liên quan