将variables发送到exressjs中的所有路由

使用nodejs / expressjs为我的web应用程序构buildAPI,我想发送一些variables到所有的API,比如站点标题和描述等等。

我偶然发现了不再使用的dynamicHelper()方法。 这样做的新方法是什么?

最简单的事情就是放入一些中间件,将其作为本地响应对象(这些中间件将自动显示在视图中)。 就像是:

app.use(function(req,res,next) { res.locals = { title : 'your title', description : 'your description' }; return next(); }); 

**编辑来说明API端点所要做的事情由于每个端点都可能对自己的对象负责,所以你也可以这样做:

 app.get('/whatever', function(req,res){ var json = {}; // do whatever to build your json json.metadata = res.locals; // or whatever the common stuff is res.send(json); } 

这将所有'常见'的东西保存在json响应的一部分中。

既然你提到你没有在expressjs中使用任何视图引擎,我假设你只是依靠angularJS做客户端重排。 您可以将这些服务器端数据传递给http头,然后从客户端读取它们。 要做到这一点,在你的路由器,你可以做到这一点,

 app.use(function(req,res,next) { res.set({ 'title': 'my title', 'description': '123' }); next(); }); 

然后在您的angularJS应用程序中,您可以从http标题中读取它们。

你应该尝试在你的前端(angularjs) 拦截器发送多个variables与每个请求api。

在下面的代码中,我在标题中发送标题和描述。

 module.factory('varInfoInterceptors', function($q) { var sendInfoInjector = { request: function(config) { config.headers['x-headers-title'] = 'Test title'; config.headers['x-headers-desc'] = 'This is test site'; return config; } }; return sendInfoInjector; }); module.config(['$httpProvider', function($httpProvider) { $httpProvider.interceptors.push('varInfoInterceptors'); }]); 

你可以在服务器端(nodejs / expressjs)通过调用req.headers expression路由获取这些值

谢谢,

迪内希