Node.js 添加中间件以检查API密钥&;通过

Node.js 添加中间件以检查API密钥&;通过,node.js,express,restify,Node.js,Express,Restify,在决定使用node和restify编写下一个API之后,我刚刚开始学习node.js。将只有几个用户访问API,而且它将是一个严格私有的API,其他人不应该能够访问它 基本上,我需要检查是否为每个请求提供了“key”和“pass”参数(并且有效)。因此,我想我可以添加一些中间件,在执行其他所有操作之前先执行这些中间件来进行检查。。e、 g: var restify = require('restify'); var server = restify.createServer({ nam

在决定使用node和restify编写下一个API之后,我刚刚开始学习node.js。将只有几个用户访问API,而且它将是一个严格私有的API,其他人不应该能够访问它

基本上,我需要检查是否为每个请求提供了“key”和“pass”参数(并且有效)。因此,我想我可以添加一些中间件,在执行其他所有操作之前先执行这些中间件来进行检查。。e、 g:

var restify = require('restify');

var server = restify.createServer({
    name: 'test'
});

server.use(function(req, res, next) {
    if (req.params.key == null) {
        console.log("No API key supplied");
        return next(new restify.NotAuthorizedError("No API key supplied"));
    }
});
server.use(restify.bodyParser());


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

server.get('/test', function(req, res, next) {
    res.send('Hello World');
    return next();
});
浏览到
localhost:8888/test
会给出
{“code”:“NotAuthorized”,“message”:“未提供API密钥”}
,这正是我想要的

但是,浏览到
http://localhost:8888/test?key=a
仍然给出相同的信息

很明显,我的做法不对。有人能给我指出正确的方向吗


提前感谢。

我需要添加
restify.queryParser()
来解析GET参数。现在,这是可行的:

var restify = require('restify');

var server = restify.createServer({
    name: 'test'
});

server.use(restify.queryParser());
server.use(restify.bodyParser());
server.use(function(req, res, next) {
    if (req.query.key == null) {
        console.log("No API key supplied");
        return next(new restify.NotAuthorizedError("No API key supplied"));
    } else return next();
});

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

server.get('/test', function(req, res, next) {
    res.send('Hello World');
    return next();
});