Подтвердить что ты не робот

Как сделать вызов 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 () {
    });
}
4b9b3361

Ответ 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 и требует, чтобы вы установили его по-ла-карте.

В командной строке:

  • Просто Метеор:
    Метеор добавить http

  • Метеорит:
    mrt add http

Протоколы 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, поэтому он ждал, пока я не получил ответ. надеюсь, что это поможет