У меня есть маршрут /users
как родительский суффикс в моем маршрутизаторе, все последующие маршруты добавят родителя, например. /users/details
выборочно применять промежуточное программное обеспечение в экспресс
В моем app.js
app.use('/api/v1/users', userRoutes);
В моем userRoutes
import express from 'express';
import users from '../controllers/user_controller';
import { authenticateRoute, authenticateSignedRoute, aclAuthenticator } from './../middlewares/AuthenticationMiddleware';
const router = express.Router();
//user routes
router.get('/details', authenticateRoute, aclAuthenticator, users.getDetails);
router.get('/posts', authenticateRoute, aclAuthenticator, users.getPosts);
module.exports = router;
ЧТО Я ХОТЕЛ СДЕЛАТЬ
Есть ли способ для меня, чтобы добавить authenticateRoute и aclAuthenticator промежуточное ПО к исходному префиксному маршруту, а затем для одного конкретного маршрута есть исключение, где применяется только третье промежуточное программное обеспечение, а не первые два.
Для примера app.use ('/ api/v1/users', authenticateRoute, aclAuthenticator, userRoutes);
Мой новый маршрутизатор файл
router.get('/details', applyOnlyThisMiddleWare, users.getDetails);
router.get('/posts', No MiddleWareAtAll, users.getPosts);
Я в основном пытаются overide начального промежуточного ПО, возможно ли это?
Wont это делает код действительно грязным, проверки на основе маршрута создают хаос. Также это должно быть сделано с помощью регулярного выражения. Если у меня есть путь '/ user/1', это будет меняться правильно.? –
@NitishPhanse - для того, что вы описали, это будет одна добавленная строка кода в два маршрута (см. Строку кода, добавленную в мой ответ). Определения маршрутов сделаны инклюзивными, а не эксклюзивными, поэтому я не знаю, как еще вы это сделаете. Более чистым способом было бы исправить ваш дизайн URL-адресов, чтобы вы не создавали эту ситуацию в первую очередь, так что middleware3 более легко отделяется от middleware1 и middleware2 (например, на целом отдельном маршрутизаторе). – jfriend00
Полностью согласен с вашей точкой. Мне просто интересно, если список исключений вырастет, скажем, 10 URL-адресов, тогда мне придется обрабатывать массив. Какую структуру URL вы предлагаете, чтобы справиться с этим? –