AngularJS $资源,API提供根密钥

时间:2015-01-05 03:53:26

标签: javascript json angularjs

我正在构建一个与提供根密钥包装的资源的服务器通信的Angular应用程序。

换句话说,对GET /api/posts的请求会给出JSON响应{ posts: [ ... ] }

同样,单个资源请求也包含在根密钥中,这样GET /api/post/1会返回{ post: {title: "Title"} }行的内容。

我想使用$resource来处理获取这些资源,并设置了一个典型行的工厂:

$resource('/api/posts/:id', {id: '@id'})

但自然这不会起作用,因为它不期望必须寻找根密钥,并且在查询时需要一个数组而不是一个对象。

我想知道是否有一种相对简单的方法可以使$resource透明,以便可以正常使用。我试图寻找解决方案,但无法找到与此特定案例相关的任何内容。我完全有可能在$resource文档中遗漏一些痛苦明显的东西,但我似乎无法弄明白。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

这个问题的解决方案比我想象的要容易。正如Patrick在他的评论中所建议的那样,只需要覆盖query方法以获得isArray: false,然后手动拔出密钥。在实践中,它看起来像这样:

$resource('/api/posts/:id', {id: '@id'}, {query: {method: 'GET', isArray: false}})

...

$resource.query({}, function(response) {
    posts = response.posts;
    // Do whatever with posts
})

我一直想知道是否有办法让$resource.query()仅返回根密钥的值,但这没有意义且没必要。