Как сделать запрос к статическому ресурсу с параметрами?

У меня есть сервер восстановления node.js и папка со статическим ресурсом

const restify = require('restify')

let server = restify.createServer()

server.listen(8080, function () {
    console.log('%s listening at %s', server.name, server.url)
});


server.get('/*', restify.plugins.serveStatic({
        directory: __dirname + '/static',
        default: 'index.html'
    }));

я пытаюсь понять, как сделать запрос на получение index.html с такими параметрами, как localhost:8080/index.html?token=123

и если токен действителен, верните index.html клиенту, иначе верните ошибку


person Garruk The Wildspeaker    schedule 21.12.2018    source источник
comment
возможный дубликат stackoverflow.com/questions/15830448/   -  person Nikos M.    schedule 21.12.2018


Ответы (1)


Вы можете объединить несколько обработчиков запросов и метод next() — сначала выполните проверку некоторых параметров, а затем, в качестве второго обработчика, используйте метод serveStatic. Вот пример:

const restify = require('restify')

let server = restify.createServer()

server.listen(8080, function () {
    console.log('%s listening at %s', server.name, server.url)
});


server.get('/*', (request, response, next) => {
    const token = request.query.token;
    if(token !== '123') {
        //those two lines below will stop your chain and just return 400 HTTP code with some message in JSON
        response.send(400, {message: "Wrong token"});
        next(false); 
        return;
    }
    next(); //this will jump to the second handler and serve your static file
    return;
},
restify.plugins.serveStatic({
    directory: __dirname + '/static',
    default: 'index.html'
}));
person miecinka    schedule 15.01.2019