Простое промежуточное ПО API Azure Node.js - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть приложение Azure node.js.Я хотел добавить промежуточное программное обеспечение 'multer' для загрузки файлов только к одному POST easy-api.

Например, у меня есть файл ./api/upload-files.js, который должен выглядеть примерно так:

module.exports = {
    "post" : async (req, res, next) => {
        // ...
    }
};

И я могу довольно легко добавить промежуточное программное обеспечение multer в файл ./app.js, где инициализируется приложение express:

const multer = require('multer');
app.post('*', multer({ storage: multer.memoryStorage() }).any());

Но если я не хочу добавлять multerпромежуточное ПО для каждой почтовой конечной точки, но только для той, которая находится в ./api/upload-files.js, как мне это сделать?

1 Ответ

0 голосов
/ 11 сентября 2018

Оригинальный комментарий

Это связано с тем, как вы создаете экземпляр Express в своем приложении.

Если вы не хотите использовать промежуточное программное обеспечение multer для какого-либо запроса, вы можете просто использовать нужную функцию в самом запросе, избегая вызова функции multer при передаче аргументов в метод запроса.

Один пример для получения конечной точки:

app.get('/getrequest', (req, res, next) => {
    console.log('Someone made a get request to your app');
})

Один пример для конечной точки сообщения:

app.post('/postrequest', (req, res, next) => {
    console.log('Someone made a POST request to your app');
})

Имейте в виду, что вы добавляете или удаляете функции промежуточного программного обеспечения в Express таким образом.

app.use('/user/:id', function (req, res, next) {
  console.log('I am a middleware!')
  next()
}, function (req, res, next) {
  console.log('I am another function')
  next()
})

Вот документы

Редактировать

Может быть, этот код может быть адаптирован к вашему варианту использования?

app.post('*', checkUseMulter);

function checkUseMulter(req, res, next) {
    if (['/mypathwithoutmulter', '/myotherpath'].includes(req.path)) {
        return next();
    }

    return multer({ storage: multer.memoryStorage() }).any();
}
...