Как перехватить экспресс-запрос node.js

В экспрессе я определил несколько маршрутов

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

Я определил, как обрабатывать запросы внутри контроллера клиента. Есть ли способ, которым я могу сделать некоторую предварительную обработку запросов, прежде чем обрабатывать их в моем контроллере? Я специально хочу проверить, авторизован ли вызывающий API для доступа к маршруту, используя понятие уровней доступа. Любой совет будет принят во внимание.

 Pickels14 июн. 2012 г., 20:22
Думайте о подключении / экспрессе как о мастере с множеством рук, каждая из которых является промежуточным программным обеспечением, которое превращает ваш запрос в правильный ответ. Так что то, что говорит Райан Олдс, на 100% правильно. ;)

Ответы на вопрос(1)

Решение Вопроса

Вы можете сделать то, что вам нужно, несколькими способами.

Это позволит разместить промежуточное программное обеспечение, которое будет использоваться до попадания в маршрутизатор. Убедитесь, что маршрутизатор добавлен сapp.use() после. Порядок промежуточного программного обеспечения важен.

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

Вы также можете использовать промежуточное программное обеспечение маршрута.

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

Это сделает шаг предварительной обработки для этого маршрута.

Примечание: убедитесь, что вашapp.use() вызывает до определения вашего маршрута. Определение маршрута автоматически добавляет app.router в цепочку промежуточного программного обеспечения, что может поставить его впереди определенного пользователем промежуточного программного обеспечения.

 15 авг. 2014 г., 15:25
@ ryan-olds, Как я могу проверить «Тип контента»? Я должен установить срок действия только в JSON, а не во всех ответах.
 15 июн. 2012 г., 17:17
Большое спасибо, это потрясающий ответ!
 02 февр. 2016 г., 23:31
Мне интересно, есть ли еще способ сделать это и осмотреть тело.stackoverflow.com/questions/35164808/…
 26 мая 2015 г., 19:11
Это простая концепция перехвата. Вы знакомы с более общим, формальным способом сделать это? Спасибо
 19 июл. 2013 г., 13:13
Красивая! Спасибо Райан

Ваш ответ на вопрос