3

AngularJS の $resource を適切に使用する方法がよくわかりません。たとえば、次のようなデータを返す REST API があります。

{
    "status": "success",
    "data": {
        "expand": "schema,names",
        "startAt": 0,
        "maxResults": 10,
        "total": 38,
        "issues": [{ ... }, { ... }, {...}, ...]
    }
}

今私が理解しようとしているのは、AngularJS で data.issues の各オブジェクトがリソースとして返される $resource を使用する方法です (この場合、10 個のリソースの配列/コレクションを取得します)。私が見つけた限られたリソースからAngularJSの $resource でそれを行うことができるように、それともできますか?

4

3 に答える 3

6

$resource は、従来の「RESTful」API ソースを想定しています。つまり、GET、PUT、POST、DELETE メソッドがすべて特定のリソース タイプに影響を与えるエンドポイントがあり、これらのメッセージの本文には、リソースと一連のメタデータではなく、リソースのみが含まれます。

あなたがやろうとしていることについて、それがあなたが立ち往生しているAPIである場合、おそらく $http を使用して独自のものをロールバックする必要があります. $resource は気にしません。

他の唯一のオプションは、Web サービスから返されたものを $resource がもう少しシームレスに処理できるものに変換する、ある種の httpInterceptor を作成することです。

意味的には、あなたの Web サービスはおそらく一般的に "RESTful" ですが、それが意味する現在の古典的な標準では RESTful ではありません。

RESTの詳細はこちら


編集:上記の情報以外では、Web API の署名を確認したり、何をしようとしているのかを知らなかったりすると、質問に詳細に答えることが難しくなります。

于 2012-10-30T20:41:43.037 に答える
3

angular の新しいバージョンでは、外部ラッパーをバイパスするリソース アクションへのコールバックを提供できます。

$resource('', {}, {
    query: {
        method: 'GET',
        isArray: true,
        transformResponse: function(response) {
            return JSON.parse(response).data.issues;
        }
    }
});

次に、リソースのコールバック関数で

Issue.query({
    //query params
}, function(issues) {
    //issues will be an array of your issues that you can process
    //or just add to the scope to be iterated over              
});
于 2013-05-02T18:51:38.410 に答える
1

コードを見ると、blesh は正しいので、カスタム エンコーダー/デコーダーをサポートするためにベース $resource コードを変更して、$resource がカスタマイズされた形式を持つ可能性のある REST API と連携できるようにしました。angularjs ホッピングへのプル リクエストを行ったので、この別のフォークを維持する必要はありません: https://github.com/angular/angular.js/pull/1514

于 2012-11-05T17:01:44.973 に答える