Как сделать вызов API с помощью метеорита
Хорошо, вот API-интерфейс twitter,
http://search.twitter.com/search.atom?q=perkytweets
Может ли кто-нибудь дать мне подсказку о том, как обратиться к этому API или ссылке, используя Meteor
Обновление::
Вот код, который я пробовал, но не показывающий никакого ответа
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 () {
});
}
Ответы
Ответ 1
Вы определяете свой checkTwitter Meteor.method внутри блок с областью действия клиента. Поскольку вы не можете вызывать кросс-домен от клиента (если не используете jsonp), вы должны поместить этот блок в блок Meteor.isServer
.
В стороне от документации клиентская сторона Meteor.method
вашей функции checkTwitter - это просто заглушка сервера- боковой метод. Вы захотите проверить документы для полного объяснения того, как серверная и клиентская стороны 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
});
}
Ответ 2
Это может показаться рудиментарным - но пакет HTTP по умолчанию не используется в вашем проекте Meteor и требует, чтобы вы установили его по-ла-карте.
В командной строке:
Протоколы Meteor HTTP
Ответ 3
Meteor.http.get на клиенте является асинхронным, поэтому вам необходимо предоставить функцию обратного вызова:
Meteor.http.call("GET",url,function(error,result){
console.log(result.statusCode);
});
Ответ 4
Используйте Meteor.http.get
. На docs:
Meteor.http.get(url, [options], [asyncCallback]) Anywhere
Send an HTTP GET request. Equivalent to Meteor.http.call("GET", ...).
В документах есть некоторые примеры использования Twitter, поэтому вы можете начать с них.
Ответ 5
на стороне сервера, если вы передаете запрос на http.get, это будет асинхронный вызов, поэтому мои решения для возврата undefined на клиенте были
var result = HTTP.get(iurl);
return result.data.response;
поскольку я не передал обратный вызов HTTP.get, поэтому он ждал, пока я не получил ответ. надеюсь, что это поможет