我想使用flickrapi(https://www.npmjs.com/package/flickrapi)包。我需要授权它:
Flickr.tokenOnly(flickrOptions, function(error, flickr) {
//I need this flickr variable
});
我希望在我的快速代码中使用此flickr
变量
app.get('/', function (req, res) {
//do something with flickr
});
我该怎么做?
答案 0 :(得分:1)
模块化方法:
将您的flickr连接代码分开:
<强>的flickr-public.js 强>
var Flickr = require("flickrapi"),
flickrOptions = {
api_key: "API key that you get from Flickr",
secret: "API key secret that you get from Flickr"
};
module.exports = (function(){
Flickr.tokenOnly(flickrOptions, function(error, flickr) {
//handle error here
console.log('Flickr Object Obtained');
return flickr;
});
})();
注意:最好在app.js文件中实例化flickr对象。 这样在服务器启动时就可以立即创建对象。 由于此flickr对象仅适用于公共API,因此不需要反复进行身份验证。
您只需在 app.js 文件中要求它即可实例化flickr对象:
require('./flickr-public');
现在只需要它就可以在任何地方访问flickr对象。
<强> routes.js 强>
const flickr = require('../path-to/flickr-public');
app.get('/', function (req, res) {
//use flickr object to perform actions.
});
<强>解释强>:
来自node.js documentation:
模块在第一次加载后进行缓存。这意味着(除其他事项外)每次调用
require('foo')
将获得完全相同的返回对象,如果它将解析为同一文件。 多次调用require('foo')
可能不会导致模块代码多次执行。
答案 1 :(得分:0)
把它放在你的获取
中app.get('/', function (req, res) {
Flickr.tokenOnly(flickrOptions, function(error, flickr) {
//do something res.status(200).send('what you want here');
});
});
答案 2 :(得分:0)
直接在路线回调中使用
public async Task<ObservableCollection<T>> All(string url) where T:IEnumerable<T> {...}