如何使用meteor进行API调用
好的,这里是twitter API,
http://search.twitter.com/search.atom?q=perkytweets
任何人都可以给我任何关于如何去使用meteor调用这个API或链接的提示
更新::
这是我试过的代码,但没有显示任何回应
if (Meteor.isClient) { Template.hello.greeting = function () { return "Welcome to HelloWorld"; }; Template.hello.events({ 'click input' : function () { checkTwitter(); } }); Meteor.methods({checkTwitter: function () { this.unblock(); var result = Meteor.http.call("GET", "http://search.twitter.com/search.atom?q=perkytweets"); alert(result.statusCode); }}); } if (Meteor.isServer) { Meteor.startup(function () { }); }
你正在定义你的checkTwitter Meteor.method 在一个客户端范围内的块。 由于您不能从客户端调用跨域(除非使用jsonp),您必须将此块放入Meteor.isServer
块中。
另外,根据文档 ,checkTwitter函数的客户端Meteor.method
只是服务器端方法的一个存根 。 您将需要查看文档以获得关于服务器端和客户端Meteor.methods
如何Meteor.methods
工作的完整说明。
这是http调用的一个工作示例:
if (Meteor.isServer) { Meteor.methods({ checkTwitter: function () { this.unblock(); return Meteor.http.call("GET", "http://search.twitter.com/search.json?q=perkytweets"); } }); } //invoke the server method if (Meteor.isClient) { Meteor.call("checkTwitter", function(error, results) { console.log(results.content); //results.data should be a JSON object }); }
这可能看起来很简单 – 但是,您的Meteor项目并不会默认使用HTTP包,而是要求您安装点菜。
在命令行上:
-
只是meteor:
meteor加http -
陨石:
mrt添加http
meteorHTTP文件
Meteor.http.get在客户端是asynchronous的,所以你需要提供一个callback函数:
Meteor.http.call("GET",url,function(error,result){ console.log(result.statusCode); });
使用Meteor.http.get
。 根据文档 :
Meteor.http.get(url, [options], [asyncCallback]) Anywhere Send an HTTP GET request. Equivalent to Meteor.http.call("GET", ...).
文档实际上包括使用Twitter的一些例子,所以你应该能够开始使用它们。
在服务器端,如果你提供的callback给http.get它将是asynchronous调用,所以我的解决scheme,客户的未定义的回报是
var result = HTTP.get(iurl); 返回result.data.response;
因为我没有把callback传递给HTTP.get,所以它一直等到我得到回应。 希望能帮助到你