我刚开始学习node.js后决定使用node编写我的下一个API并解析。只有几个用户访问API,它将是一个严格的私人用户 - 没有其他人能够访问它。
基本上,我需要检查每个请求是否提供(和有效)“密钥”和“通过”参数。所以,我想我可以添加一些在执行检查之前执行的中间件......例如:
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":"No API key supplied"}
这就是我想要的。
但是,浏览http://localhost:8888/test?key=a
仍会提供相同的消息..
提前致谢。
答案 0 :(得分:5)
我需要添加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();
});