2015-06-10 71 views
2

我正在使用遵循JSON API規範的API。ngResource和Json API規範

http://jsonapi.org/ 

我建立使用ngResource在離子某個應用,和resource.query()方法預計響應是一個數組:

[ 
    { 
    "id": 1, 
    "foo": "bar" 
    }, 
    { 
    ... 
    } 
] 

但是,嵌套在JSON API規格通行證下在data屬性:

{ 
    "data": [ 
    { 
     "id": 1, 
     "foo": "bar" 
    }, 
    { 
    ... 
    } 
    ] 
} 

我怎樣才能自動後期處理來自API的響應去完成ngResource期待?

回答

5

查看transformResponse和攔截器對象。

https://docs.angularjs.org/api/ngResource/service/ $資源

編輯:添加代碼

$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) { 
    return { 
     'response': function(response) { 
     response.data = response.data.data; 
     return response; 
     } 
    }; 
    }); 

$httpProvider.interceptors.push('myHttpInterceptor'); 
1

編輯:

正如你可以看到下面的查詢方法是建立在默認情況下處理數組。

{ 'get': {method:'GET'}, 
    'save': {method:'POST'}, 
    'query': {method:'GET', isArray:true}, 
    'remove': {method:'DELETE'}, 
    'delete': {method:'DELETE'} 
}; 
  1. 您可以使用簡單的GET方法來獲得從您的API對象列表響應。
  2. 或者你也可以通過這種方式改變查詢的默認行爲。

var config = { method:'GET', isArray: false }; 
var url = 'http://jsonapi.org'; 
$resource(url, {}, {query: config}); 

更多細節。請檢查https://docs.angularjs.org/api/ngResource/service/$resource