我有以下不那么宁静的API,我必须使用Angular的$资源进行映射:
GET /api/posts/:id
GET /api/list_posts/:kind
第二条路线返回与:kind
匹配的每个帖子。
客户端,使用AngularJS,我想使用这些更传统的路线:
index.html#/posts/:id
index.html#/posts?kind=...
如何定义将kind
转发到网络服务的$资源?
我尝试了以下但是,唉,Angular不理解:kind
的含义:
appServices.factory('Post', ['$resource',
function ($resource) {
return $resource('/api/posts/:id', {}, {
query: {url: '/api/list_posts/:kind'}
});
}])
编辑:示例
如果我的地址栏中有index.html#/posts?kind=42
,则应以这种方式查询API:/api/list_posts/42
。
如果我的地址栏中有index.html#/posts/42
,那么应该以这样的方式查询API:/api/posts/42
。
答案 0 :(得分:0)
您需要将url配置与您传递的选项中的参数匹配:
return $resource('/api/posts/:id', { id: '@id' }, {
query: { url: '/api/list_posts/:kind', params: { kind: '@kind' } }
});
现在$ resource会在您传递给它的参数中查找id
和kind
值:
Post.get({ id: 42 });
Post.query({ kind: 'any' });