web-dev-qa-db-ja.com

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 () {
    });
}
44
iJade

CheckTwitter Meteor.methodinsideクライアントスコープブロックを定義しています。 (jsonpを使用しない限り)クライアントからクロスドメインを呼び出すことはできないため、このブロックをMeteor.isServerブロックに配置する必要があります。

ドキュメントによれば 、checkTwitter関数のクライアント側Meteor.methodは単にstubのサーバー側のメソッド。サーバー側とクライアント側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
    });
}
57
TimDog

これは初歩的なように思えるかもしれませんが、HTTPパッケージはデフォルトではMeteorプロジェクトに含まれていないため、個別にインストールする必要があります。

コマンドラインで次のいずれかを実行します。

  1. ただの流星:
    meteor add http

  2. 隕石:
    mrt add http

Meteor HTTP Docs

29
user2132316

クライアント上のMeteor.http.getは非同期であるため、コールバック関数を提供する必要があります。

Meteor.http.call("GET",url,function(error,result){
     console.log(result.statusCode);
});
6

つかいます Meteor.http.getdocs

Meteor.http.get(url, [options], [asyncCallback]) Anywhere
Send an HTTP GET request. Equivalent to Meteor.http.call("GET", ...).

このドキュメントには実際にTwitterの使用例がいくつか含まれているので、それらを使い始めることができるはずです。

4
Rahul

サーバー側では、http.getにコールバックを提供すると非同期コールになりますので、クライアントでの未定義のリターンに対する私のソリューションは

var result = HTTP.get(iurl); return result.data.response;

hTTP.getにコールバックを渡さなかったため、応答があるまで待機していました。それが役に立てば幸い

0
Mr Megamind