Как сделать статический файл недоступным или просмотреть папку после промежуточного программного обеспечения в Express JS - PullRequest
0 голосов
/ 28 марта 2019

У меня есть папка

api-docs внутри, у меня есть index.html некоторые файлы css и js

Мне нужно сделать api-doc для аутентифицированного пользователя.

Я не использую его в представлениях, так как В проекте я использую Jade в представлении, а API-документ в HTML

Я пытался

router.get('/v1/secure-api-documentation',(req,res)=>{
     console.log('A')
     res.sendFile(__dirname + '/../api-doc/index.html');
 });

и

router.get('/v1/secure-api-documentation',ensureAuthenticate,(req,res)=>{     
     express.static(path.join(__dirname,'../api-doc'))
 });

1 Ответ

2 голосов
/ 28 марта 2019

express.static (path, [options]) возвращает функцию. Итак, в основном то, что делает ваш код:

router.get('/v1/secure-api-documentation',ensureAuthenticate,(req,res)=>{
    express_static_function // this function further accepts arguments req, res, next
    //there is no function call happening here, so this is basically useless
 });

Однако, это не то, для чего используется express.static Express.static берет путь запроса и ищет файл с тем же именем в указанной вами папке.

Обычно, если запрос GET приходит к '/ v1 / secure-api-Documentation' , он будет принимать путь запроса после '/ v1 / secure-api-Documentation' и найдите это в папке api_docs . Передача express.static в router.get () вызовет его для самого КОНКРЕТНОГО пути. Это важно. GET '/ v1 / secure-api-Documentation / index.html' завершится ошибкой. Потому что такой маршрут не обрабатывается.

Что вам нужно сделать, это вызвать экспресс-статический вызов для любого пути, например '/ v1 / secure-api-Documentation / *' .

Для этого вам нужно взять объект экспресс-приложения и написать следующий код:

//make sure to use the change the second argument of path.join based on the file where your express app object is in.
app.use('/v1/secure-api-documentation',express.static(path.join(__dirname,'../api-doc')));

Теперь это будет работать не только для файла index.html, но и для любого файла js / css внутри запрашиваемого api_docs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...