ngResource 和 Json API 规范

ngResource and Json API spec

我正在使用符合 JSON API 规范的 API。

http://jsonapi.org/

我正在使用 ngResource 在 Ionic 中构建一个应用程序,resource.query() 方法期望响应是一个数组:

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

但是 JSON API 规范通过了嵌套在 data 属性下的规范:

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

我怎样才能自动 post- 处理来自 API 的响应以满足 ngResource 的期望?

查看 transformResponse 和拦截器对象。

https://docs.angularjs.org/api/ngResource/service/$resource

编辑:添加代码

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

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

编辑:

如下所示,查询方法默认用于处理数组。

{ '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