我正在构建一个搜索引擎,在客户端 POST 搜索字符串后在服务器端查询 Twitter 和 Wiki API。当我仍然完全是客户端时,对 Wiki API 的 AJAX 请求如下所示:
$.ajax({
url: 'https://en.wikipedia.org/w/api.php',
data: {
action: 'query',
list: 'search',
srsearch: searchString, // variable pulled from input
format: 'json',
//origin: 'https://www.mediawiki.org'
},
xhrFields: {
withCredentials: true
},
dataType: 'jsonp' // will probably use 'json' now that I'm server-side
}).done( function ( data ) {
searchParser(data);
});
... //searchParser() below
现在,我已经实现了一个 Node.js Web 应用程序,它从主页上的客户端表单 POST 获取搜索字符串(索引.ejs)。然后服务器将呈现结果页面(结果.ejs)与 wiki 和 Twitter 搜索结果。 Twitter API 搜索已经处理BoyCook 的 TwitterJSClient https://github.com/BoyCook/TwitterJSClient.
我想知道执行此操作的最佳方法exact从我的服务器查询。我一直在环顾四周,找不到简洁的答案。有人对此有什么建议吗?
这是我基于的解决方案乔纳森的 https://stackoverflow.com/users/15031/jonathan-lonowski reply:
function wikiSearch () {
var query = querystring.stringify({
action: 'query',
list: 'search',
srsearch: searchString,
srlimit: 10,
srwhat: 'text',
format: 'json'
});
var options = {
hostname: 'en.wikipedia.org',
path: '/w/api.php?' + query
};
var req = https.request(options, function(res) {
if (!res) {
wikiData = "An error occured!";
complete();
};
var body = '';
console.log("statusCode: ", res.statusCode);
res.setEncoding('utf8');
res.on('data', function(data) {
body += data;
});
res.on('end', function() {
wikiData = wikiDataParser( JSON.parse(body) );
complete();
});
});
req.end();
req.on('error', function (err) {
wikiData = "<h2>MediaWiki API is currently down.</h2>";
complete();
})
};
... // complete() is below
这改变了wikiData根据请求或响应而变化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)