Javascript 在Nodejs中创建简单的oEmbed系统
对于个人项目,我正在尝试使用Nodejs创建一个简单的oEmbed系统 我的路线如下所示:Javascript 在Nodejs中创建简单的oEmbed系统,javascript,node.js,Javascript,Node.js,对于个人项目,我正在尝试使用Nodejs创建一个简单的oEmbed系统 我的路线如下所示: app.get('/oembed/:url', function (req, res) { oembed.get(req.params.url, function (error, result) { return res.json(200, {message: "OK"}); }); }); app.get('/oembed/:url', function (req, r
app.get('/oembed/:url', function (req, res) {
oembed.get(req.params.url, function (error, result) {
return res.json(200, {message: "OK"});
});
});
app.get('/oembed/:url', function (req, res) {
oembed.get(req.params.url, function (error, result) {
if (error) {
res.json(500, {message: error});
} else {
res.json(200, {message: "OK"});
}
});
});
使用var oembed=require('../oembed')公开oembed代码>
对于oembed.js
本身,我有:
var request = require('request');
exports.get = function(url, callback) {
//this bit will be developed to call different functions depending on the URL
html = vimeo(url)
};
function vimeo(url) {
var videoUrl = url;
var endpoint = 'http://www.vimeo.com/api/oembed.json';
var url = endpoint + '?url=' + encodeURIComponent(videoUrl) + '&width=640';
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var video = JSON.parse(body);
return video.html
}
})
}
到目前为止,vimeo
函数将所需的html返回给函数调用,但我对此有点不知所措。我不确定如何将html返回到初始请求(oembed.get部分)并使用回调的错误和结果参数
任何帮助(和建议)都将不胜感激。您似乎不明白回调函数是如何工作的。在oembed.js
文件中需要类似的内容:
var request = require('request');
exports.get = function(url, callback) {
var endpoint = 'http://www.vimeo.com/api/oembed.json';
request(endpoint + '?url=' + encodeURIComponent(url) + '&width=640', function (error, response, body) {
if (!error && response.statusCode == 200) {
try {
callback(null, JSON.parse(body).html);
} catch (error) {
callback(error);
}
}
});
};
您的路线应该如下所示:
app.get('/oembed/:url', function (req, res) {
oembed.get(req.params.url, function (error, result) {
return res.json(200, {message: "OK"});
});
});
app.get('/oembed/:url', function (req, res) {
oembed.get(req.params.url, function (error, result) {
if (error) {
res.json(500, {message: error});
} else {
res.json(200, {message: "OK"});
}
});
});
你不应该回信吗?我怀疑您正在返回“undefined”,然后您将在控制台中看到一些html被返回?非常有用,谢谢-我认为坚持使用我的私有函数(例如Vimeo)没有问题,或者您删除它有什么原因吗?顺便说一下,您完全正确-仍在试图让我的头脑了解回调!ha haI删除它只是因为您的exports.get()
只调用了它,我在导出的函数中添加了它的函数,您可以重新添加它,但保留相同的结构。感谢您的帮助-我现在可以清楚地看到回调是如何工作的