使用Express进行多个API调用的静态variables

我想有一个variables,可以保持其最后的API调用的价值。 也就是说,每次我调用/api ,它会将variables计数递增1,当我调用/value ,它会显示count的值。 所以,如果我调用/api 3次,然后调用/value ,它应该打印3。

可能吗? 保持variables抛出多个API调用的值? 我试图避免访问文件和数据库,我相信我可以做到这一点。

如果您在js文件的top-level创buildvariables,那么它将是该js文件的全局variables。 另外,如果你的/api/value路由处理程序在不同的文件中,你可以创build一个global variable ,它将在所有其他文件中可见。 但是你必须指出,没有其他的variables应该和你的全局variables具有相同的名字,因为它将被覆盖。 在这里你有一个很好的相关post: 如何在node.js中使用全局variables?

 var count = 0; app.get('/api', function(req, res) { count += 1; res.send(); } app.get('/value', function(req, res) { res.send(count); } 

您可以创build一个模块,您可以在您的应用程序的任何部分需要。

例如,你在counter.js定义了一个模块

 var counter = function() { var count = 0; this.addCount = function() { count++ } this.getCount = function() { return count; } } counter.instance = null; counter.getInstance = function() { if (this.instance === null) { this.instance = new counter(); } return this.instance; } module.exports = counter.getInstance(); 

现在,你可以像这样在server.js使用它

 var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var morgan = require('morgan'); app.use(morgan('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); var counter = require('./counter.js'); app.get('/value', function(req, res, next) { res.send('Count = ' + counter.getCount()); }); app.use('/api', require('./api.js')); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; console.log("Server listening at http://%s:%s", host, port); }); 

并在你的api.js这样

 var express = require('express'); var router = express.Router(); var counter = require('./counter.js'); router.get('/', function(req, res, next) { counter.addCount(); res.send('API Called'); }); module.exports = router; 

是的,使用可以使用快速会话或任何其他会话为同一个或全局variables

你可以在你的api之外设置一个像这样的全局variables。

 var count = 0; 

然后做一个这样的API …

 app.get('/value', function(req, res) { res.send(count); }) app.get('/api', function(req, res) { count = count + 1; res.send(); }) 

上面的例子是使用express框架。 如果你不使用它,你应该习惯它。 这是一个伟大的框架!