Как заставить промежуточное ПО ExpressJS принимать параметры - PullRequest
0 голосов
/ 05 ноября 2019

Что я хочу получить, так это добавить унифицированную обработку для контроля доступа к различным ресурсам. Будем высоко цениться в стилях accessControlMiddlewareA или accessControlMiddlewareB!

router.post('/pathA', accessControlMiddlewareA("sectionA", req, res, next) => {
    //....
})
router.post('/pathB', accessControlMiddlewareA("sectionB", req, res, next) => {
    //....
})

или

router.post('/pathA', accessControlMiddlewareB("sectionA", (req, res, next) => {
    //....
}))
router.post('/pathB', accessControlMiddlewareB("sectionB", (req, res, next) => {
    //....
}))

1 Ответ

0 голосов
/ 05 ноября 2019

Вам просто нужно написать функцию, которая возвращает промежуточное ПО:

function accessControlMiddlewareA ( section ) {
    // now we return the actual middleware:
    return (req, res, next) {
        // use `section` in here
    }
}

Затем вы можете использовать его следующим образом:

router.post('/pathA', accessControlMiddlewareA("sectionA"));

Если вам нужно сделать что-топосле обработки после промежуточного программного обеспечения просто добавьте другое анонимное промежуточное программное обеспечение:

router.post('/pathA', accessControlMiddlewareA("sectionA"));
router.post('/pathA', (req, res, next) => {
    // additional logic here
});

или более короткую версию:

// same as the code above:
router.post('/pathA', accessControlMiddlewareA("sectionA"), (req, res, next) => {
    // additional logic here
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...