使用AngularJS将查询字符串的参数转发到Web服务

时间:2014-10-20 15:31:39

标签: angularjs

我有以下不那么宁静的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

1 个答案:

答案 0 :(得分:0)

您需要将url配置与您传递的选项中的参数匹配:

return $resource('/api/posts/:id', { id: '@id' }, {
    query: { url: '/api/list_posts/:kind', params: { kind: '@kind' } }
});

现在$ resource会在您传递给它的参数中查找idkind值:

Post.get({ id: 42 });
Post.query({ kind: 'any' });