【发布时间】:2016-01-01 12:06:02
【问题描述】:
我正在构建一个搜索引擎,它会在客户端发布搜索字符串后在服务器端查询 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 (index.ejs) 中获取搜索字符串。然后,服务器将使用 wiki 和 twitter 搜索结果呈现结果页面 (results.ejs)。 Twitter API 搜索已使用 BoyCook's TwitterJSClient 处理。
我想知道从我的服务器执行此准确查询的最佳方式。我一直在环顾四周,找不到简洁的答案。有人对此有什么建议吗?
【问题讨论】:
-
Node 为此提供了
http.request()和http.get()。 -
当然可以,但是 dataType 字段和 xhrFields 字段呢?
-
没有与
dataType等效的内置函数。您必须自己解析响应——JSON.parse()。至于凭据,Authorization标头可能可用,如果来自客户端的请求包含它 - 您必须将其复制到此请求中。浏览器不会将与en.wikipedia.org或twitter.com相关的 cookie 发送到您的服务器。 -
感谢您的帮助。请参阅下面的最终结果。
标签: jquery ajax node.js express heroku