我正在使用遵循JSON API规范的API。
http://jsonapi.org/
我正在使用ngResource在Ionic中构建应用程序,而resource.query()方法希望响应是一个数组:
[
{
"id": 1,
"foo": "bar"
},
{
...
}
]
但是JSON API规范传递了嵌套在data
属性下的内容:
{
"data": [
{
"id": 1,
"foo": "bar"
},
{
...
}
]
}
如何自动后处理来自API的响应以满足ngResource的期望?
答案 0 :(得分: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 :(得分:1)
修改强>
如下所示,查询方法是为默认处理数组而构建的。
{ 'get': {method:'GET'},
'save': {method:'POST'},
'query': {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'}
};
var config = { method:'GET', isArray: false };
var url = 'http://jsonapi.org';
$resource(url, {}, {query: config});
了解更多细节。请检查https://docs.angularjs.org/api/ngResource/service/$resource